一、去除信號中的直流分量的兩種方法
- 信號中的每個數據減去平均值
- 通過對數據做FFT變換,令FFT變換后的Y = FFT(X),Y(1)=0即可去除信號中的直流分量
二、去除信號中的直流分量的代碼
%%%第二種方法 x = rand(128, 1); L=128;%信號長度 F=0:127; f = fft(x); A = abs(f); A = A/(L/2); subplot(1,2,1) plot(F(1:L/2),A(1:L/2));%原數據的FFT f(1) = 0;%令f(1)置0 f1 =f ; x_ac = real(ifft(f1)); A1 = abs(f1); A1 = A1/(L/2); subplot(1,2,2) plot(F(1:L/2),A1(1:L/2));%去除直流分量后的FFT %%%第一種方法 x2 = x-mean(x);
三、原因:
一個信號f(x)可以分解為無數信號,即:
可以看到,會有cos(0.x) = 1的直流成分,其中的ω=0,即頻率為0的頻譜
而,我們所做的工作,所有數據減去平均值,最后會令整個數據的平均值為0,這個數據就成為了奇函數產生的結果,這個時候對其進行分解,只會存在
這個時候就不存在cos(0.x)的直流成分