有关fft去直流的问题

我对一个txt数据进行傅里叶变化之后,没有去直流和去直流的结果如下,为什么去了直流分量之后感觉多出一个频率成分呀?这是怎么造成的呢?谢谢您的回复。

img

img

对于这个问题,可能是因为在进行FFT之前,对原始数据没有进行去直流处理,那么如果信号中有直流分量,会在0Hz处出现很大的一个值,影响结果。而进行了去直流处理后,则可以将直流分量消除,产生一个更干净的频谱图。

下面是一个简单的matlab代码示例,展示如何对原始数据进行去直流处理:

[x,Fs]=audioread('test.wav'); %读入信号 [x_Trend,t]=detrend(x); %去直流分量 X=fft(x_Trend); %进行FFT变换 f=linspace(0,Fs,length(x_Trend)); %计算频率坐标 Mag=abs(X); %计算幅度谱 Phase=angle(X); %计算相位谱

其中,detrend函数可以用于去除信号的直流分量。