如果我想在Matlab中繪制一個簡單的正弦波的PSD,我會做如下的事情:
Fs = 1000;
t = 0:1/Fs:1-(1/Fs);
x = cos(2*pi*100*t) ;
N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);
psdx = (1/(Fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
plot(freq,10*log10(psdx))
grid on
但是,為簡單起見,我在SIMULINK中有一個正弦波發生器,我需要繪制PSD.我做了類似以下的事情:
然後我得到了一個名為“Sinwave”的變量,我怎麼可能應用上面的Matlab代碼來繪制PSD?
請注意,變量Sinewave是1×1雙倍時間序列.我試圖用Sinwave替換x,但它沒有用.
更新:應用答案
我應用了推薦的内容,但是我的輸出與使用Matalb的輸出不同.這是我使用的代碼:
Fs = 1000;
x = Sinwave.Data;
N = length(x);
dft = fft(x);
dft = dft(1:N/2+1);
psd = (1/(Fs*N)) * abs(dft).^2;
psd(2:end-1) = 2*psd(2:end-1);
freq = 0:Fs/length(x):Fs/2;
plot(freq,10*log10(psd))
grid on
這個用于SIMULINK導出的正弦波
但是,來自matlab代碼的代碼如下:
我需要輸出來自matalb,在噪聲層中具有所有這些漣漪.如何獲得準确的輸出?
請注意我已經使用了兩者的确切值.
更新2:SIMULINK正弦波設定
1-正弦波塊
2-到工作區塊
3-解算器