使用MATLAB在向量中查找最大值

时间:2011-11-08 16:58:46

标签: matlab numerical-methods

我正在尝试使用MATLAB找到数字向量的local maxima。内置的findpeaks函数适用于以下向量:

[0 1 2 3 2 1 1 2 3 2 1 0]

其中峰值(每个3)仅占据向量中的一个位置,但如果我有一个向量,则:

[0 1 2 3 3 2 1 1 2 3 2 1 0]

第一个“峰值”占据向量中的两个位置,而findpeaks函数不会将其拾取。

有没有一种很好的方法来编写一个最大值发现函数来检测这些峰值?

3 个答案:

答案 0 :(得分:3)

您可以使用图像处理工具箱中的REGIONALMAX功能:

>> x = [0 1 2 3 3 2 1 1 2 3 2 1 0]
x =
     0     1     2     3     3     2     1     1     2     3     2     1     0

>> idx = imregionalmax(x)
idx =
     0     0     0     1     1     0     0     0     0     1     0     0     0

答案 1 :(得分:-1)

a = [ 0 1 2 3 3 2 1 2 3 2 1 ];

sizeA = length(a);

result = max(a);

for i=1:sizeA, 

    if a(i) == result(1)
       result(length(result) + 1) = i;
    end
end

result包含max,后跟所有等于max。

的值位置

答案 2 :(得分:-1)

更容易:

a = [1 2 4 5 5 3 2];
b = find(a == max(a(:)));

输出:

b = [4,5]