# How can I set a descend order finding peaks to my graph ?

3 views (last 30 days)
Ramesh Bala on 26 Sep 2019
Commented: Ramesh Bala on 1 Oct 2019
I have a graph that takes the values from first maximum peak point and plots it.Now,how shall i introduce a threshold or descend order from that point,so that it find the next highest peak ?
S(:,1)=[ 5 15 35 45 5 15 35 45];
S(:,2)=[ 5 15 15 5 45 35 35 45];
for k=1:1:length(S)
[a(k),b2(k)]=max(abs(hilbert(signal(k,:)))); % first peak amp & index
[PkAmp, PkTime] = findpeaks(abs(hilbert(signal(k,:))),t);
peaks(1,1)=a(k);
peaks(2,1)=t(b2(k));
j=2;
for i=1:length(PkTime)
if PkTime(i)>t(b2(k))
peaks(1,j)=PkAmp(i);
peaks(2,j)=PkTime(i);
j=j+1;
end
end
figure;
plot(t,(signal(k,:)),t,abs(hilbert(signal(k,:))),peaks(2,1),peaks(1,1),'ro')
hold on;grid on
plot(PkTime, PkAmp, '^r', 'MarkerFaceColor','r')
xlim([0 0.0006]);ylim([-inf inf])
hold on,plot(peaks(2,3),peaks(1,3),'ko')
end Ramesh Bala on 27 Sep 2019
Thanks Darova for the comment.
It doesn't work as it didn't made any envelope over it.

Akira Agata on 26 Sep 2019
How about combining envelope and findpeaks functions?
The following is an example.
% Calculate envelope and detect it's peaks
ul = envelope(signal(1,:));
[pks,locs] = findpeaks(ul,t,'MinPeakProminence',0.5e-3);
% Show the result
figure
plot(t,signal(1,:))
hold on
plot(t,ul)
scatter(locs,pks,'rv')
legend({'Original data','Envelope','Peaks'},'FontSize',12) Ramesh Bala on 1 Oct 2019
I would like to know how can I further choose different peak values and store them in a separate variable.
Currently pks0(pt) and locs0(pt) is stored as a variable in a linear way according to signal numbers.
But,is there a way using brush option or something to select single peak from a figure and store it as (1,1) and then another peak from another plot and store as (1,2)  ### Categories

Find more on Descriptive Statistics in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!