算法和低通滤波器去除噪声作用的比较

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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] into 256 nodes

y=exp(-(cos(t).^2)).*(sin(2*t)+2*cos(4*t)+0.4*sin(t).*sin(50*t));

fy=fft(y); %compute fft of y filterfy=[fy(1:6) zeros(1,2^8-12) fy(2^8-5:2^8)]; %sets fft

filtery=ifft(filterfy); %comput es inverse fft of the filtered fft

hold on

plot(t,y,'r*') %ge nerates the graph of the original signal

plot(t,filtery) %genera tes the plot of the compressed signal

title('filtered signal with FFT * un signal')

hold off

原信号波形:

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; %经过傅立叶反变换后的信号

hold on

plot(t,y,'g*')

plot(t,signal(1:length(t)))

title('filtered signal with LPF unfiltered signal')

hold off

调用的fftseq子函数:

function [M,m,df]=fftseq(m,ts,df)

% [M,m,df]=fftseq(m,ts,df)

% [M,m,df]=fftseq(m,ts)

%FFTSEQ Generates M, the FFT of the sequence m.

% The sequence is zero padded to meet the required frequency resolution df. % ts is the sampling interval. The output df is the final frequency resolution. % Output m is the zero padded version of input m. M is the FFT.

fs=1/ts;

if nargin == 2

n1=0;

else

n1=fs/df;

end

n2=length(m);

n=2^(max(nextpow2(n1),nextpow2(n2)));

M=fft(m,n);

m=[m,zeros(1,n-n2)];

df=fs/n;

经过低通滤波器后的信号波形:

LPF仿真结果与原信号的比较:

由于有用信号的频率往往比较低,而噪声信号往往是高频信号,所以我们可以使高频部分为零,来达到去除噪声的目的。通过以上的比较,我们可以发现,利用FFT算法和低通滤波器都可以实现对信号的去噪。但在设计低通滤波器时要考虑奈奎斯特采样频率的问题。为

2,M为正整数,这就有一定的局限了能不断的进行分解,FFT算法要求DFT的运算点数为N=M

性,而低通滤波器的方法却没有这种限制.

相关文档
最新文档