MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Ijeoma Madu on 9 Dec 2012

I want to represent 3 signals on a waterfall plot to see how the signal changes over time

fs = 1000; % Sampling frequency

t = (0:fs)/fs; % One second worth of samples

A = [1 2]; % Sinusoid amplitudes (row vector)

A1 = [3 4];

A2 = [5 6];

f = [150;140]; % Sinusoid frequencies (column vector)

f1 = [120;100];

f2 = [100;90];

xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));

xn1=A1*cos(2*pi*f1*t) + 0.8*randn(size(t));

xn2=A2*cos(2*pi*f2*t) + 0.5*randn(size(t));

Hs = spectrum.periodogram;

psd=psd(Hs,xn,'Fs',fs,'NFFT',1024,'SpectrumType','onesided')

Hs1 = spectrum.periodogram;

psd1=psd(Hs1,xn,'Fs',fs,'NFFT',1024,'SpectrumType','onesided')

Hs2 = spectrum.periodogram;

psd2=psd(Hs2,xn,'Fs',fs,'NFFT',1024,'SpectrumType','onesided')

waterfall(psd,psd1,psd2)

*No products are associated with this question.*

Answer by bym on 9 Dec 2012

Accepted answer

First of all, do not name a variable the same as a function! Change the the first psd variable to

psd0 = psd(Hs,xn,'Fs',fs,'NFFT',1024,'SpectrumType','onesided');

then make the call to waterfall like this:

waterfall([psd0.data psd1.data psd2.data]')

## 0 Comments