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

3 visualizzazioni (ultimi 30 giorni)
Ramesh Bala il 26 Set 2019
Commentato: Ramesh Bala il 1 Ott 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
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
darova il 26 Set 2019
What if just use findpeaks() two times?
[y, ix] = findpeaks(origin_data);
[y1,ix1] = findpeaks(y);
i = ix(ix1);
plot(time,origin_data)
hold on
plot(time(i),origin_data(i),'^r')
hold off
Ramesh Bala il 27 Set 2019
Thanks Darova for the comment.
It doesn't work as it didn't made any envelope over it.

Accedi per commentare.

### Risposta accettata

Akira Agata il 26 Set 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)
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
Ramesh Bala il 30 Set 2019
Thank you ! it works well for most signals !
I would like to know how to set that Minpeak prominence ,could you elaborate how to identify it and its significance.
Ramesh Bala il 1 Ott 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)

Accedi per commentare.

### Categorie

Scopri di più su Descriptive Statistics in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by