MatLab函数,从最大或最小点向左或向右移动点

问题描述:

我想弄清楚如何找到一个函数,该函数将x点离开我设置的最小和最大点在matlab中的数组。MatLab函数,从最大或最小点向左或向右移动点

可以说我做max(data(row 1:row 2,column)),它给了我一点。我想找到与左边4个点相对应的值,并且在该值的右边。

所以让我们说它告诉我,第5列的最大值是1.5,它位于行号5 我将如何使该功能向后移动4行/点?

例子:

max(data_10MIN(49000:51000,9) 

ans = -3.5226 

data_10MIN(50251) = -3.5226,所以我只想知道,4分落后是50247和移动4个前锋将50255但我会如何对我有一个功能做到这一点?因为max(data_10MIN(49000:51000,9)作为函数不会给我xy值。

max函数还返回最大值的(first occurence)索引。您可以简单地抵消该值,并达到您想要的4点左/右。

[maxvalue, idx] = max(data); 
left4idx = max(1, idx - 4); 
right4idx = min(numel(data), idx+4); 

left4_value = data(left4idx); 
right4_value = data(right4idx); 

(它是加/减一个索引时添加的边界检查是一个好主意,我在这里做的是使用最小/最大功能。)

+0

好了,所以我觉得作品。不过,我认为我的情况有点不同。在我的脚本中,我有eval(['VCathodicOh3(2,i)=''min(''data_'varnames {1}'(49000:51000,9));'])其中vcathodicoh3是一个新变量i'使其对我的代码中的其他数据起作用。基本上我想在脚本中编辑这个函数,以便它左/右(取决于我想在哪种情况下使用哪一个)取4分而不是最小值。我如何将你的命令集成到我的代码中? –

+0

使用'max'返回的索引归结为基本的matlab,阅读更多关于这里[here](http://*.com/documentation/matlab/235/introduction-to-matlab) –

+0

eval(['VCathodicOh3( 2,i)=''min(''data_'varnames {1}'(49000:51000,9))']) –