R中的fft函数与'seewave'包中的spec函数?他们没有给出相似的频谱

信息处理 fft 傅里叶变换 频谱 r
2022-02-02 01:54:54

我知道规范会给我该分量的频率和相应的幅度,而 fft 将计算信号的 DFT 并抛出我必须根据物理频率绘制的每个分量的复数。

y 是时间序列信号 Fs 是采样频率。

N = length(y);
f1=fft(y)
fa = seq(0,N-1,by=1)*(Fs/N)
plot(fa,abs(f1),type='l',xlim = c(0,3),ylim = c(0,50))
s1=spec(y,f=1000,plot = FALSE)
s1$x<-s1$x*1000   (KHz to Hz)
plot(s1$x,s1$y,type='l',xlim = c(0,3))

红色一个来自 spec 函数,蓝色来自 fft 函数。

在此处输入图像描述

1个回答

免责声明:我什至不知道 R。但我检查了spec 函数的文档Hanning function is applied to the analysis window

这很可能是两幅图差异的根源。fft 函数不应用任何窗口(即,它只是我们看到的自然矩形窗口)。