数字信号处理实习报告 下载本文

(2)输入为I=sin(0.1*pi*t)+sin(0.55*pi*t)+sin(0.9*pi*t)时的滤波结果

(3)输入为I=sin(0.1*pi*t)+sin(0.8*pi*t)+sin(0.95*pi*t)时的滤波结果

七、结果分析

由幅频特性可知,椭圆滤波器在通带内的频率特性是平坦的,并且随着频率的增加而衰减。通带截止频率:0.2π,幅度衰减不大于1分贝,阻带截止频率:0.3π,幅度衰减大于15分贝。正弦信号在经过IIR滤波器滤波后,由傅里叶变换后的频谱图可看出高频信号被滤除,低频信号被保留了下来。

八、专题实习心得

通过本专题的学习,熟悉和巩固了Butterworth数字低通滤波器和椭圆滤波器的设计方法和原理,实现滤波器设计的有关经典算法,更重要的是熟练掌握使用MATLAB语言设计各种要求的数字滤波器。这一部分的内容相对来说是有些难度了,做起来花费的精力也多了一些,不过对数字信号处理内容的掌握上又加深了一层。

题目四 FIR滤波器的设计

一、实验内容

选取合适窗函数设计一个线性相位FIR低通滤波器,使它满足如下性能指标: 通带截止频率:ωp=0.5π,通带截止频率处的衰减不大于3分贝; 阻带截止频率:ωs=0.66π,阻带衰减不小于40分贝

二、实验目的

1、掌握用窗函数法设计FIR滤波器的原理和方法。 2、熟悉线性相位滤波器特性。

3、了解各种窗函数对滤波器特性的影响。

三、原理及算法概要

1、算法

通过其通带截止频率ωp与阻带截止频率ωs算出其过渡带的宽度与滤波器的长度,从而得到理想滤波器的截止频率,根据所要求的理想滤波器,得到hd(n)。由于其通带截止频率处的衰减不大于3分贝与阻带衰减不小于40分贝,我选择最接近的汉宁窗,最后调用函数h=hd.*win 及freqz(h,1,512)得到实际汉宁窗的响应和实际滤波器的幅度响应。

2、原理概要

利用窗函数法设计FIR 滤波器,FIR滤波器的最大特点是其相位特性可以设计为严格的线性,而其幅值可以任意设置,这样输出波形就不会相位失真。 理想低通滤波器的单位取样响应hd(n)是无限长的,所以要用一个有限长的因果序列h(n)进行逼近,最有效的方法是截断hd(n),即用有限长的窗函数w(n)来截取hd(n),表示为h(n)=hd(n)w(n)。为获得线性相位的FIR滤波器,h(n)必须满足中心对称条件,序列h(n)应有一定的延迟α,且α=(N-1)/2频率响应逼近hd(ejw)的FIR滤波器,最简单的窗函数为矩形窗: 1 n<(N-1)/2 W(n)= 0 n>(N-1)/2

1?加窗后的频谱H(e)?Hd(e)?W(e)??W(ej?)H(ej(???)) 加窗后使

2??j?j?j?实际频响偏离理想频响,影响主要有两个方面:

(1) 通带和阻带之间存在过渡带,过渡带宽度取决于窗函数频响的主瓣宽度。 (2) 通带和阻带区间有纹波,这是由窗函数的旁瓣引起的,旁瓣越多,纹波越

多。

增加窗函数的宽度N,其主瓣宽度减小,但不改变旁瓣的相对值。为了改善滤波器的性能,要求窗函数的主瓣宽度尽可能窄,以获得较窄的过渡带;旁瓣衰减尽可能大,数量尽可能大,从而改善纹波状况,使实际频响H(ejω)更好地逼近理想频响Hd(ejω)。

除了矩形窗外,一般还可以采用以下几种窗函数

2?2?)?WR(??)] N?1N?12?2?)?WR(??)] 海明窗W(n)?0.54WR(?)?0.23[WR(??N?1N?12?2?)?WR(??)] 布来克曼窗W(n)?0.42WR(?)?0.23[WR(??N?1N?1汉宁窗:W(n)?0.5WR(?)?0.25[WR(??四、程序设计

clc;

wp=0.5*pi;ws=0.66*pi;wd=ws-wp; %hanning窗

N_hann=ceil(8*pi/wd); wc=(wp+ws)/2; if mod(N_hann,2)==0 N_hann=N_hann+1; end

hann_win=hanning(N_hann);

b_hann=fir1(N_hann-1,wc/pi,hann_win); freq_axis=[0:pi/512:pi-pi/512]; freqn=[0:511]/512;

H_hann=freqz(b_hann,1,512); figure(1);subplot(311);

plot(freqn,20*log10(abs(H_hann)));

xlabel('归一化频率w/pi');ylabel('幅度谱(dB)');title('采用hanning窗设计fir滤波器幅度谱'); subplot(312);

plot(freqn,angle(H_hann));

xlabel('归一化频率w/pi');ylabel('相位谱');title('采用hanning窗设计fir滤波器相位谱'); subplot(313);

stem(b_hann);

xlabel('n');ylabel('h(n)');title('单位脉冲响应序列'); %hamming窗

N_hamm=ceil(8*pi/wd);wc=(wp+ws)/2; if mod(N_hamm,2)==0 N_hamm=N_hamm+1; end

hamm_win=hamming(N_hamm);

b_hamm=fir1(N_hamm-1,wc/pi,hamm_win); H_hamm=freqz(b_hamm,1,512); figure(2); subplot(311);

plot(freqn,20*log10(abs(H_hamm)));

xlabel('归一化频率w/pi');ylabel('幅度谱(dB)');title('采用hamming窗设计fir滤波器幅度谱'); subplot(312);

plot(freqn,angle(H_hamm));

xlabel('归一化频率w/pi');ylabel('相位谱');title('采用hamming窗设计fir滤波器相位谱'); subplot(313); stem(b_hann);

xlabel('n');ylabel('h(n)');title('单位脉冲响应序列'); %N*2

N2_hamm=2*N_hamm; wc=(wp+ws)/2; if mod(N2_hamm,2)==0 N2_hamm=N2_hamm+1; end

%hamm_win=hamming(N2_hamm); b_hamm=fir1(N2_hamm-1,wc/pi); H_hamm=freqz(b_hamm,1,512); figure(3); subplot(311);

plot(freqn,20*log10(abs(H_hamm)));

xlabel('归一化频率w/pi');ylabel('幅度谱(dB)');

title('窗长增大一倍,采用hamming窗设计fir滤波器幅度谱');subplot(312); plot(freqn,angle(H_hamm));

xlabel('归一化频率w/pi');ylabel('相位谱');

title('窗长增大一倍,采用hamming窗设计fir滤波器相位谱'); subplot(313); stem(b_hann);

xlabel('n');ylabel('h(n)');title('单位脉冲响应序列');

五.程序运行结果

(1)采用hanning窗设计FIR滤波器