在Matlab上使用FFT计算和绘制信号的频谱

问题描述:

我在Matlab中使用FFT计算我的信号的频谱时缺少一些东西。 我的代码:在Matlab上使用FFT计算和绘制信号的频谱

​​

你会这么好心来告诉我,我搞砸了?

我试图检查是否algorythm工程,并使用相同的信号的这两个取样(相同的采样频率;在两个不同的时间范围0-10和0-100):

fs=1000; 
time10 = [0:1/fs:10]; 
time100 = [0:1/fs:100]; 
data10 = sin(2*pi*0.23 .*time10)+cos(2*pi*12 .*time10); 
data100 = sin(2*pi*0.23 .*time100)+cos(2*pi*12 .*time100); 

我想在两个图谱应supperpose但他们不...至于这里看到:https://www.dropbox.com/s/wfols9o409pr94u/FFT_spectrum_*.png?dl=0 https://www.dropbox.com/s/a8vmzwto6x4130w/FFT_spectrum_*.fig?dl=0

感谢

+1

对于第一个示例,您可以解释为什么您认为这不起作用(显示日志错误或照片)。而对于第二个例子,你可以上传一张照片,显示两个spophtrum根本没有supperpose。 –

+1

而对于第二个例子,这两个频谱不能叠加使用,因为在'data'中隐含的矩形窗口不相同。 –

+1

这段代码或多或少与MathWorks提供的代码相同。我没有看到你“搞砸了”的地方。你能解释为什么你认为这是不正确的吗? – rayryeng

好消息是,有什么不对您通过频谱计算其小精灵。

问题是,通过查看不同长度的样本,您可以完全查看两个不同的样本。 在时域中,它们可以被看作是无限长的正弦曲线与不同长度的矩形窗口相乘的结果。

在频域中,无限长连续时间正弦信号的频谱与矩形窗口的频谱进行卷积。对于不同的窗口长度,这些窗口的相应频谱具有不同的宽度(对于较长的矩形窗口,较窄的频谱)。结果,无限长正弦信号频谱中的尖峰将分散在不同的带宽上。这正是你所看到的。