Plotting only highest peaks from multiple signals

12 次查看(过去 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

类别

Help CenterFile Exchange 中查找有关 Spectral Measurements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by