This works, with the example you provided:
pks = [100,80,60,70,50,80]';
locs = [1,2,3,4,5,6]';
dpks = diff([pks(1); pks]);
Lv = dpks <= 0;
pks1 = pks(Lv);
locs1 = locs(Lv);
figure
plot(locs, pks, '^')
hold on
plot(locs1, pks1, 's')
hold off
It does not do any rigorous checking, and just looks ad adjacent peaks.
You can easily wrap it in a function:
function [pks1,locs1] = descending_peaks(pks,locs)
dpks = diff([pks(1); pks]);
Lv = dpks <= 0;
pks1 = pks(Lv);
locs1 = locs(Lv);
end
Experiment to get the result you want.
Best Answer