-2

我有以下代码计算峰值及其索引并显示它们,但我想对峰值进行排序并显示,所以我的代码如下

function [peaks,peak_indices] = find_peaks(row_vector)
    A = [0 row_vector 0];
    j = 1;
    for i=1:length(A)-2
        temp=A(i:i+2);
        if(max(temp)==temp(2))
            peaks(j) = row_vector(i);

            peak_indices(j) = i;
            j = j+1;
        end
    end
end

在通过以下方式实现它之后,它显示了我的输出

A = [2 1 3 5 4 7 6 8 9];
>> [peaks, peak_indices] = find_peaks(A)

peaks =

     2     5     7     9


peak_indices =

     1     4     6     9

但不是直接显示峰值,我想以降序显示峰值,或者像这样 9 7 5 2,我知道 matlab 中存在排序函数,如下方式

b=[2 1 3 4 6 5];
>> sort(b)

ans =

     1     2     3     4     5     6

但是有两个问题,首先它按升序排序,以及如何在我的第一个函数中使用排序函数以降序形式返回峰值?

4

1 回答 1

1

你可以做:

peaks = sort(peaks, 'descend')

要分别重新排序,也可以peak_indices从以下位置获取排序索引sort

[peaks, idx] = sort(peaks, 'descend');  %// Sort peaks
peak_indices = peak_indices(idx);       %// Reorder peak indices accordingly
于 2013-03-19T17:17:57.930 回答