How to identify both sides of a flat peak (flat part of a signal)?
4 views (last 30 days)
Show older comments
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')
0 Comments
Accepted Answer
Star Strider
on 13 Jul 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:
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 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!