我编写了一个执行该功能的脚本:
eval(['VCathodicOh3(2,i) =' 'min(' 'data_' varnames{1} '(49000:51000,9));'])
在此,'VCathodicOh3'是通过从第9列中获取以数组形式组织的不同变量(它们是1:100000行乘10列)来生成的。
我想,而不仅仅是找到min,还要为此函数添加一些内容,使其获取min,找到min所在的点,然后将4点移动到该点的左侧。 / p>
前:
min(data_var(49000:51000,9)) = -3.190
然后让我们说(50250,-3.190)是你找到分钟的点。我希望脚本移动那个点-4(50246,y)并给我新的相应值。
答案 0 :(得分:0)
您可以使用min
的第二个输出来告诉您最小值的索引。然后,您可以将此值减小4,将其向左移动。
a = [5 3 2 1 0]
[~, ind] = min(a);
newval = a(ind-4)
如果你有一个2D矩阵,你可以将线性索引ind
转换为行/列并递减:
a = magic(10);
[~, ind] = min(a);
[row,col] = ind2sub(size(a), ind);
newval = a(row, col-4)
作为旁注,我真的不鼓励使用像你这样的动态变量名,并使用更合适的数据结构,如单元格数组或struct
。由于我确信您已经注意到,eval
的使用可能会很快失控。