2016-07-26 145 views
0

点我写了一个脚本,它的功能:向左或向右移动从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)并给我新的对应值。

回答

0

您可以使用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的使用可以非常迅速地失控。

相关问题