向左或向右移动从MATLAB
问题描述:
点我写了一个脚本,它的功能:向左或向右移动从MATLAB
eval(['VCathodicOh3(2,i) =' 'min(' 'data_' varnames{1} '(49000:51000,9));'])
在此,“VCathodicOh3”是由那些在数组中组织不同的变量,从第9列取数据进行的(它们是1:100000行×10列)。
我想,而不是只是找到最小值,也添加一些东西到这个函数,以便它需要最小值,找到最低点的位置,然后移动4点到该点的左边。
例:
min(data_var(49000:51000,9)) = -3.190
那么可以说(50250,-3.190)是指您找到最小的点。我希望脚本移动那个点-4(50246,y)并给我新的对应值。
答
您可以使用min
的第二个输出来告诉您最小值的索引。然后,您可以将此值减4以将其移至左侧。
a = [5 3 2 1 0]
[~, ind] = min(a);
newval = a(ind-4)
如果你有一个二维矩阵,可以线性指数转换ind
到行/列和减量是:
a = magic(10);
[~, ind] = min(a);
[row,col] = ind2sub(size(a), ind);
newval = a(row, col-4)
作为一个方面说明,我真的不鼓励使用动态变量名状您正在使用更合适的数据结构,例如单元阵列或struct
。我相信你已经注意到了,eval
的使用可以非常迅速地失控。