Plotting only highest peaks from multiple signals

11 views (last 30 days)
Hi,
I need to extract only the peaks of three signals so I have one plot without changing the amplitude of the individual plots.
fs = 2e3;
t = (0:1/fs:1-1/fs)';
A= sin(2*pi*19*t);
B= chirp(t-0.6,61,t(end),603,'quadratic');
C=cos(2*pi*19*t);
peakSig= A+B+C;

Accepted Answer

Image Analyst
Image Analyst on 3 Dec 2019
Lisa, try using max() function to compute the max.
fs = 2e3;
t = (0:1/fs:1-1/fs)';
A= sin(2*pi*19*t);
B= chirp(t-0.6,61,t(end),603,'quadratic');
C=cos(2*pi*19*t);
plot(t, A, 'r-', 'LineWidth', 2);
hold on;
plot(t, B, 'g-', 'LineWidth', 2);
plot(t, C, 'b-', 'LineWidth', 2);
% Get the highest of any signal:
peakSig = max([A, B, C], [], 2);
% Get the lowest of any signal:
valleySig = min([A, B, C], [], 2);
plot(t, peakSig, 'k-', 'LineWidth', 3);
plot(t, valleySig, 'k-', 'LineWidth', 3);
grid on;
% Zoom in so we can actually see what's happening:
xlim([0, 0.04]);
legend('A', 'B', 'C', 'peakSig', 'valleySig');
0001 Screenshot.png
If you have the valley signal in there also, you'll get this:
0000 Screenshot.png

More Answers (2)

KALYAN ACHARJYA
KALYAN ACHARJYA on 3 Dec 2019
fs = 2e3;
t = (0:1/fs:1-1/fs)';
A= sin(2*pi*19*t);
B= chirp(t-0.6,61,t(end),603,'quadratic');
C=cos(2*pi*19*t);
peakSig= max(A)+max(B)+max(C) % You can find the maximum of A/B/C using max function
Or:
You can use findpeaks function to get the peaks of the individual signal.

ABHILASH SINGH
ABHILASH SINGH on 3 Dec 2019
Edited: ABHILASH SINGH on 3 Dec 2019
I think you are looking for this.
fs = 2e3;
t = (0:1/fs:1-1/fs)';
A= sin(2*pi*19*t);
B= chirp(t-0.6,61,t(end),603,'quadratic');
C=cos(2*pi*19*t);
peakSig= A+B+C;
plot(t,A,t,B,t,C)
figure
plot(t,envelope(peakSig))
Let me know if you need something different. This is the peakSig vs t
This is the peak of the three signals together

Community Treasure Hunt

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

Start Hunting!