天天看点

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?