MATLAB - 在 FFT 中删除零频率

信息处理 matlab fft
2022-01-04 06:11:49

我在 0Hz 处获得高频。我怎样才能删除它?我不应该得到它。

我的代码是

W = 3.64*2*pi;

Fs = 50;                      % Sampling frequency in hz
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
v = 113*(1+0.40*sin(W*t));

theta0 = 12*(pi/180);         % in radians for 12 degree
theta1 = 6*(pi/180);          % in radians for 6 degree
theta = theta0-theta1*sin(W*t);

Lift = 0.5*1.225*v.^(2)*(2*pi).*theta;

NFFT = 2^nextpow2(L);         % Next power of 2 from length of Lift
Y = fft(Lift,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

subplot(2,1,1);
plot(Fs*t,Lift);

subplot(2,1,2)
plot(f, 2*abs(Y(1:NFFT/2+1))) 
1个回答

零频率仓只是信号的平均值。看看 DFT 的定义,对于零频率,我们得到:k

X[k]=n=0N1x[n]ei2πnk|k=0X[0]=n=0N1x[n]ei2πn0=n=0N1x[n]

因此,在您计算 FFT 并除以样本数之后,您确实得到了信号的平均值。为了消除它,请在 FFT 计算之前应用以下内容:

Lift = Lift - mean(Lift);