Plotting only highest peaks from multiple signals

9 次查看(过去 30 天)
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;

采纳的回答

Image Analyst
Image Analyst 2019-12-3
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

更多回答(2 个)

KALYAN ACHARJYA
KALYAN ACHARJYA 2019-12-3
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 2019-12-3
编辑:ABHILASH SINGH 2019-12-3
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!

Translated by