# How to identify both sides of a flat peak (flat part of a signal)?

6 views (last 30 days)
Tomaszzz on 13 Jul 2022
Commented: Star Strider on 15 Jul 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?
[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') Star Strider on 13 Jul 2022
Use the islocalmin (introduced in R2017b) function instead of findpeaks
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: 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.
.
Star Strider on 15 Jul 2022
As always, my pleasure!