![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1064295/image.png)
How to identify both sides of a flat peak (flat part of a signal)?
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Tomaszzz
il 13 Lug 2022
Commentato: Star Strider
il 15 Lug 2022
Hi all,
I have the following signal (also attached).
I am trying to find the peaks circles red. The below code does identify all the peaks circled black but i do not understand why it ommits the other side of a flat signal? Can you help please?
load 'signal'
[peak_value,peak_location]= findpeaks(-force_y_r, 'MinPeakProminence',10, 'MinPeakDistance',100);
peak_value = -peak_value;
plot(force_y_r, 'LineWidth',1.5); hold on
plot(peak_location,peak_value,'ko')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1064100/image.jpeg)
0 Commenti
Risposta accettata
Star Strider
il 13 Lug 2022
LD = load('signal.mat');
force_y_r = LD.force_y_r;
Lv1 = islocalmin(force_y_r, 'FlatSelection','first', 'MinSeparation',500, 'MinProminence',750);
Lv2 = islocalmin(force_y_r, 'FlatSelection','last', 'MinSeparation',500, 'MinProminence',750);
x = 1:numel(force_y_r);
figure
plot(x, force_y_r)
hold on
plot(x(Lv1), force_y_r(Lv1), '^r')
plot(x(Lv2), force_y_r(Lv2), '^g')
hold off
producing:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1064295/image.png)
It may be necessary to change the name-value pair parameters for other data sets. Use the find function to get numeric indices from the logical vectors.
.
6 Commenti
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!