从matlab中的点向左或向右移动

时间:2016-07-26 17:55:40

标签: matlab

我编写了一个执行该功能的脚本:

    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)并给我新的相应值。

1 个答案:

答案 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的使用可能会很快失控。