DSP

数字信号处理:运用FFT简单滤波

2019-07-13 17:38发布

通过快速Fourier变换我们可以知道信号序列中含有哪些频率成分,各个频率成分的振幅是多大。
通过快速Fourier逆变换我们可以把频率域的信号转化为时间域,从而得到与原信号长度相同的时间序列。
那么,我们就可以通过将频率域中的某些频率成分的振幅置零,然后运用逆变换到时间域实现滤波。
举例说明: clear all dt = 0.02; N = 206; n = 0:N-1; t = n*dt; f = n/(N*dt); x =load('F:matlabimpacts.txt'); x =x'; subplot(2,2,1),plot(t,x); y = fft(x); subplot(2,2,2),plot(f,abs(y)*2/N); f1 = 0; f2 = 4; yy = zeros(1,length(y)); for m =0:N-1 if(m/(N*dt)>=f1&m/(N*dt)(1/dt-f2)&m/(N*dt)<(1/dt-f1)) yy(m+1) =0; else yy(m+1) =y(m+1); end end subplot(2,2,4),plot(f,abs(yy)*2/N); subplot(2,2,3),plot(t,real(ifft(yy))); 程序把0到4Hz的成分的振幅置零,然后逆变换得到过滤后的波形。效果似乎就是过滤掉了直流成分。
在这里插入图片描述