-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

しかし、2つの問題があります。最初は昇順で並べ替えます。また、最初の関数で並べ替え関数を使用して、降順で並べ替えられた形式でピークを返す方法はありますか?

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 に答える