您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > FFT算法和低通滤波器去除噪声作用的比较
FFT算法和低通滤波器去除噪声作用的比较我们可以把FFT简单地看作一个变换器,输入N+1个数,输出N+1个数,但他们对应的意义不同,如果把输入当作时域,则输出为频域,表征了其对应域的变化快慢。假设输入信号本身的频率为fc(或者说频带宽为fc),被频率为fs的冲击串采样(由采样定理,fs=2*fc),则变换前的N+1个数字对应的x轴为{t0,t1,…tN}={0,Ts,2*Ts,....,N*Ts}(其中Ts为1/fs,为采样周期)则变换后的N+1个数对应的x轴变为频率,范围为0~fs,以fs/N为间隔,既为频率点{0,fs/N,2*fs/N,……,fs},在matlab中如果用fftshift(fft(data)),则变换后对应x轴为-fs/2~fs/2,如果满足采样定理的话,信号频带-fc~fc就包含在转换后的频谱里面了,就不会有失真。考虑信号:y(t)=exp[-)(cos2t](sin2t+2cos4t+0.4sintsin50t)在[0,2pi]的情况,首先利用FFT算法对其进行去噪声处理,即使高频部分信号为零,利用MATLAB进行仿真,其程序及仿真结果如下:t=linspace(0,2*pi,2^8);%discretizes[0,2pi]into256nodesy=exp(-(cos(t).^2)).*(sin(2*t)+2*cos(4*t)+0.4*sin(t).*sin(50*t));fy=fft(y);%computefftofyfilterfy=[fy(1:6)zeros(1,2^8-12)fy(2^8-5:2^8)];%setsfftfiltery=ifft(filterfy);%computesinversefftofthefilteredfftholdonplot(t,y,'r*')%generatesthegraphoftheoriginalsignalplot(t,filtery)%generatestheplotofthecompressedsignaltitle('filteredsignalwithFFT*unfileredsignal')holdoff原信号波形:FFT仿真结果与原信号的比较:下面设计一个底通滤波器实现消噪的功能:t=linspace(0,2*pi,2^8);%时间向量ts=2*pi/(2^8);%抽样间隔fs=1/ts;df=1/2*pi;%频率分辨率y=exp(-(cos(t).^2)).*(sin(2*t)+2*cos(4*t)+0.4*sin(t).*sin(50*t));[Y,y,df1]=fftseq(y,ts,df);%对信号进行傅立叶变换Y=Y/fs;%设计一个低通滤波器f_cutoff=4/2*pi;%低通滤波器截止频率n_cutoff=floor(f_cutoff/df1);f=[0:df1:df1*(length(y)-1)]-fs/2;H=zeros(size(f));H(1:n_cutoff)=ones(1,n_cutoff);H(length(f)-n_cutoff+1:length(f))=ones(1,n_cutoff);DEM=H.*Y;%经过低通滤波器后的信号频谱signal=real(ifft(DEM))*fs;%经过傅立叶反变换后的信号holdonplot(t,y,'g*')plot(t,signal(1:length(t)))title('filteredsignalwithLPFunfilteredsignal')holdoff调用的fftseq子函数:function[M,m,df]=fftseq(m,ts,df)%[M,m,df]=fftseq(m,ts,df)%[M,m,df]=fftseq(m,ts)%FFTSEQGeneratesM,theFFTofthesequencem.%Thesequenceiszeropaddedtomeettherequiredfrequencyresolutiondf.%tsisthesamplinginterval.Theoutputdfisthefinalfrequencyresolution.%Outputmisthezeropaddedversionofinputm.MistheFFT.fs=1/ts;ifnargin==2n1=0;elsen1=fs/df;endn2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n;经过低通滤波器后的信号波形:LPF仿真结果与原信号的比较:由于有用信号的频率往往比较低,而噪声信号往往是高频信号,所以我们可以使高频部分为零,来达到去除噪声的目的。通过以上的比较,我们可以发现,利用FFT算法和低通滤波器都可以实现对信号的去噪。但在设计低通滤波器时要考虑奈奎斯特采样频率的问题。为了能不断的进行分解,FFT算法要求DFT的运算点数为N=M2,M为正整数,这就有一定的局限性,而低通滤波器的方法却没有这种限制.
本文标题:FFT算法和低通滤波器去除噪声作用的比较
链接地址:https://www.777doc.com/doc-7382637 .html