天天看點

matlab fft simulink,matlab – 從SIMULINK到工作區FFT?

如果我想在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.我做了類似以下的事情:

matlab fft simulink,matlab – 從SIMULINK到工作區FFT?

然後我得到了一個名為“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 fft simulink,matlab – 從SIMULINK到工作區FFT?

但是,來自matlab代碼的代碼如下:

matlab fft simulink,matlab – 從SIMULINK到工作區FFT?

我需要輸出來自matalb,在噪聲層中具有所有這些漣漪.如何獲得準确的輸出?

請注意我已經使用了兩者的确切值.

更新2:SIMULINK正弦波設定

1-正弦波塊

matlab fft simulink,matlab – 從SIMULINK到工作區FFT?

2-到工作區塊

matlab fft simulink,matlab – 從SIMULINK到工作區FFT?

3-解算器

matlab fft simulink,matlab – 從SIMULINK到工作區FFT?