电子科技大学 DSP 实验四 数字滤波器的设计及实现

时间:2024.4.20

        

一、实验室名称:数字信号处理实验室

二、实验项目名称:数字滤波器的设计及实现

三、实验原理:

一.数字滤波器设计:

1.数字滤波器设计步骤:

(1)  根据给定的滤波器设计要求,得到参数化描述,即通带,阻带截止频率,通带阻带纹波等数据。

(2)  找一个数字系统函数G(z),使其频率响应逼近设计要求。

(3)  择合适的滤波器结构对满足要求的传递函数G(z)进行实现。

2.数字滤波器设计中的注意事项:

(1)  设计要求的参数化:图1给出了一个典型的数字低通滤波器的幅频特性说明。理解每个参数的物理含义。

(2)  滤波器类型选择:在数字滤波器实现中可选择IIR滤波器和FIR滤波器两种。在实现相同幅频特性时,IIR滤波器的阶数会相对FIR滤波器的更低;而在实现中,对相同阶数的两种滤波器来看,对每个采样值所做的乘法数量,IIR约为FIR的两倍;另外,FIR还可以方便地设计成线性相位滤波器。总的来说,IIR滤波器除不能实现线性相位这一点外,由于阶数的原因,从计算复杂度上较FIR滤波器有很大的优势。根据以上这些区别,结合实际的设计要求,就可以选择一款合适的滤波器。

(3)  波器设计的方法:由于IIR滤波器和FIR滤波器各自的结构特点,所以它们的设计方法也不一样。在IIR滤波器的设计中,常用的方法是:先根据设计要求寻找一个合适的模拟原型滤波器,然后根据一定的准则将此模拟原型滤波器转换为数字滤波器,即为我们需要设计的数字滤波器。在FIR滤波器设计中,一般使用比较直接的方法:根据设计的要求在时域对理想的冲击响应序列进行加窗逼近,或从频域对需要实现的频率响应特性进行采样逼近然后进行反FFT。

(4)  波器阶数估计:IIR滤波器的阶数就等于所选的模拟原型滤波器的阶数,所以其阶数确定主要是在模拟原型滤波器设计中进行的。FIR滤波器阶数估计可以根据很多工程中的经验公式,这些公式可以直接从设计的参数要求中估计滤波器阶数。例如,对FIR低通滤波器,已知通带截止频率,阻带截止频率,最大通带纹波和最大最带纹波,则可以使用下面的公式估计其阶数:

3.数字滤波器的设计方法:

(1)  IIR滤波器设计方法:

(a)冲击响应不变法:

A.  满足设计要求的模拟原型滤波器进行部分分式展开为:

            

B.  由于               ,可以得到:

 

(b)双线性变换法:

A.  设计要求中给出的边界频率进行预畸处理,然后用得到的频率进行模拟滤波器设计,得到模拟原型滤波器

B. 用双线性变换法求出数字滤波器:

(2)  FIR滤波器设计方法:

(a)窗函数法:

A.  根据设计的要求选择合适的窗函数,然后根据此窗计算阶数等参数N。

B.    写出冲击响应序列的表达式:,其中,为理想的冲击响应序列,一般为无限长的,为长度为N的窗函数。

C.    计算所得冲击响应序列的DTFT,然后验证其是否满足设计要求。

(b)频率采样法:

A.  根据设计要求估算滤波器阶数N。

B.  对要求的频率响应特性进行采样,获得N个离散样点值H(k)。

C.  对H(k)求N点IFFT,得到所需要的滤波器冲击响应序列h(n)。

D.  计算所得冲击响应序列的DTFT,然后验证其是否满足设计要求。

4.滤波器的实现结构

(a)  FIR滤波器:

直接型实现结构

级联结构

并联结构

多相实现结构

线性相位型结构

(b)  IIR滤波器:

直接型实现结构:I型和II型

级联结构

并联结构

具体结构形式参见教材第六章内容。

二.在滤波器设计中使用到的MATLAB命令:

1.  IIR滤波器设计函数:butter, buttord, chebwin, cheb1ord, cheb2ord, cheby1, cheby2, ellip, ellipord。

例如:用下面的MATLAB命令可估算一个Butterworth滤波器的阶数:

[N, Wn] = buttord(Wp, Ws, Rp, Rs)

2.  FIR滤波器设计函数:fir1, fir2, remez, remezord, kaiser, kaiserord, hanning, hamming, blackman。

例如:用下面的MATLAB命令可根据式(7.18)估算一个FIR滤波器阶数:[N, fpts,mag,wt] = remezord(fedge,mval,dev)

3.  MATLAB中提供的滤波器设计辅助设计软件(在命令窗口中键入“fdatool”即可启动),界面如下图1所示。在本界面中填写需要设计的滤波器参数,即可设计出需要的滤波器。还可以通过本工具提供的幅度,相位观察窗口观察设计出来的滤波器的幅度,相位特性等,并可以将设计好的滤波器冲激响应系数导出进行实现。

图1 MATLAB中滤波器辅助设计软件界面

四、实验目的:

从理论上讲,任何的线性时不变(LTI)离散时间系统都可以看做一个数字滤波器,因此设计数字滤波器实际就是设计离散时间系统。

本实验通过使用MATLAB函数和滤波器辅助设计软件对数字滤波器进行设计和实现,加深学生对数字滤波器的常用指标、设计过程及实现的理解。

五、实验内容:

对给定的输入信号(基带二进制码元为500Hz,两个载频分别为2kHz和4kHz的FSK调制信号)进行滤波。利用MATLAB编程设计一个数字低通滤波器,指标要求如下:通带截止频率:;阻带截止频率:;采样频率;通带峰值起伏:;最小阻带衰减:。要求分别用MATLAB中的IIR和FIR设计命令进行滤波器设计,得出需要的滤波器系数。再将得到的滤波器系数在MATLAB中编程进行实现(选择直接型实现结果),对输入信号进行滤波,观察滤波结果。

在提供的DSP实验板上编程对本滤波器过程进行实现,观察实际的滤波结果,并与理论结果对比。

六、实验器材(设备、元器件):

安装MATLAB软件的PC机一台,DSP实验演示系统一套。

七、实验步骤:

(1)  给定输入信号:FSK信号(输入的二进制待调信号为随机信号,码元频率为500Hz,两个载频分别为2kHz和4kHz,采样频率为20kHz,)。利用MATLAB编程产生本信号,画出其时域和频域的图像。

(2)  利用MATLAB编程设计一个数字低通滤波器,指标要求如下:

通带截止频率:;阻带截止频率:;采样频率;通带峰值起伏:;最小阻带衰减:

(3)  分别用MATLAB中的IIR和FIR设计命令进行滤波器设计,得出需要的滤波器系数。

(4)  (拓展要求)用MATLAB滤波器辅助设计软件对上述滤波器进行设计,并将得到的滤波器系数对输入信号进行滤波,观察滤波实现。

(5)  将得到的滤波器系数在MATLAB中编程进行实现(选择直接型实现结果进行实现),对(1)中的输入信号进行滤波(分别用FIR和IIR滤波器进行),观察滤波结果,画出时域和频域图像。

(6)  (拓展要求)修改需要设计的滤波器的指标要求,比如:将通带截止频率修改为2kHz,或者将最小阻带衰减改为,这时再重复(3)和(5)的步骤,观察所得到的滤波器效果,并对这一结果进行解释。

(7)  (拓展要求)在提供的DSP实验板上编程对滤波器滤波过程进行实现,观察实际的滤波结果,并与理论结果对比。

八、实验数据及结果分析:

程序:(1)产生输入FSK信号的程序

(2)    FIR滤波器设计程序

(3)    IIR滤波器设计程序

clear;

clc;

fs=20000;

f1=2000;

f2=4000;

t=0:1/fs:1;

xn=fix(2*rand(1,(max(t)-min(t))*500));

xn=(xn-1/2)*2;

xt=ones(1,length(t));

for i=1:length(xn)

    if xn(i)==-1

        k=40*i-39;

        xt(k:k+39)=-ones(1,40);

    end

end

car1=cos(2*pi*f1*t); %1 载波

car2=cos(2*pi*f2*t); %-1 载波

xt_fsk=(xt+1).*car1/2-(xt-1).*car2/2; %fsk调制

Xk_fsk=abs(fftshift(fft(xt_fsk)));

f_hz=linspace(-fs/2,fs/2,length(t));

figure(1)

subplot(4,1,1),stem(linspace(0,1,length(xn)),xn),axis([0,0.02,-1.2,1.2]),title('随机二进制序列x[n]'),xlabel('n');

subplot(4,1,2),plot(t,xt),axis([0,0.02,-1.2,1.2]),title('xt'),xlabel('时间t(s)');

subplot(4,1,3),plot(t,xt_fsk),axis([0,0.02,-1.2,1.2]),title('2FSK调制信号'),xlabel('时间t(s)');

subplot(4,1,4),plot(f_hz,Xk_fsk),axis([-6000,6000,min(Xk_fsk),1.2*max(Xk_fsk)]),title('2FSK调制后频谱'),xlabel('频率Hz');

%滤波器设计

%FIR 汉明窗

f_p=2200;

f_s=3500;

Rp=1;Rs=40;

wp=2*pi*f_p/fs;

ws=2*pi*f_s/fs;

wc=(wp+ws)/2;

dw=ws-wp;

A_hann=1;

N_hann=2*ceil(3.11*pi/dw);

B_hann=fir1(N_hann,wc/pi,hann(N_hann+1));

[H_hann,w_hann]=freqz(B_hann,A_hann,512);

figure(2)

subplot(2,1,1),plot(w_hann/pi,20*log10(abs(H_hann))),title('FIR传输函数幅值'),xlabel('w/pi'),ylabel('dB');

subplot(2,1,2),plot(w_hann/pi,angle(H_hann)),title('FIR传输函数相位'),xlabel('w/pi'),ylabel('dB');

%IIR 巴特沃兹

[N_but,Wn_but]=buttord(2*f_p/fs,2*f_s/fs,1,40);

[B_but,A_but]=butter(N_but,Wn_but);

[H_but,w_but]=freqz(B_but,A_but,512);

figure(3)

subplot(2,1,1),plot(w_but/pi,20*log10(abs(H_but))),title('IIR传输函数幅值'),xlabel('w/pi'),ylabel('dB');

subplot(2,1,2),plot(w_but/pi,angle(H_but)),title('IIR传输函数相位'),xlabel('w/pi'),ylabel('dB');

%FIR 汉明窗滤波

y_hann=filter(B_hann,A_hann,xt_fsk);

YK_hann=abs(fftshift(fft(y_hann)));

%IIR 巴特沃兹滤波

y_but=filter(B_but,A_but,xt_fsk);

YK_but=abs(fftshift(fft(y_but)));

figure(4)

subplot(3,1,1),plot(t,xt_fsk),axis([0,0.1,-1.2,1.2]),title('滤波器时域波形'),xlabel('时间t(s)');

subplot(3,1,2),plot(t,y_hann),title('FIR滤波后时域波形'),xlabel('时间t(s)'),axis([0,0.1,-1.2,1.2]);

subplot(3,1,3),plot(t,y_but),title('IIR滤波后时域波形'),xlabel('时间t(s)'),axis([0,0.1,-1.2,1.2]);

figure(5)

subplot(3,1,1),plot(f_hz,Xk_fsk),axis([-6000,6000,min(Xk_fsk),1.2*max(Xk_fsk)]),title('滤波前频谱'),xlabel('频率Hz');

subplot(3,1,2),plot(f_hz,abs(YK_hann)),title('FIR滤波后频谱'),xlabel('频率Hz'),axis([-6000,6000,min(YK_hann),1.2*max(YK_hann)])

subplot(3,1,3),plot(f_hz,abs(YK_but)),title('IIR滤波后频谱'),xlabel('频率Hz'),axis([-6000,6000,min(YK_but),1.2*max(YK_but)]);

(4)    FIR滤波器实现程序(用滤波器系数对输入信号进行滤波)

(5)    IIR滤波器实现程序(用滤波器系数对输入信号进行滤波)。

结果:(1)产生的输入FSK信号的时域和频域波形

(2)FIR滤波结果,时域和频域波形。

FIR滤波器传输函数

(3)IIR滤波结果,时域和频域波形。

IIR滤波器传输函数

滤波前后时域对比

滤波前后频域对比

九、实验结论:

答:通过对滤波前后频谱分析, FIR和IIR滤波器能够过滤掉FSK信号4000Hz的高频成分,使低频成分2000Hz通过,所以该滤波器设计满足要求。FIR滤波器阶数N=48,IIR滤波器阶数N=10。

十、总结及心得体会:

答:通过本次试验加深了对数字滤波器的常用指标、设计过程及实现的理解。

十一、对本实验过程及方法、手段的改进建议:

                                                     报告评分:

                                      指导教师签字:


第二篇:实验8 IIR数字滤波器设计综合实验


实验8  IIR数字滤波器设计综合实验

1.实验目的

(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法.

(2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。

(3)掌握IIR数字滤波器的MATLAB实现方法。

(4)通过观察滤波器输入、输出信号的时域波形及其频谱,建立数字滤波的概念。

2.实验原理

设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR数字滤波器。

本实验中数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号进行滤波,得到滤波后的输出信号

3.实验内容及步骤

(1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图10.4.1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。

图10.4.1  三路调幅信号st的时域波形和幅频特性曲线

(2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。

提示:抑制载波单频调幅信号的数学表示式为

 

其中,称为载波,为载波频率,称为单频调制信号,为调制正弦波信号频率,且满足。由上式可见,所谓抑制载波单频调幅信号,就是2个正弦信号相乘,它有2个频率成分:和频和差频,这两个频率成分关于载波频率对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率对称的两根谱线,其中没有载频成分,故取名为抑制载波单频调幅信号。容易看出,图10.4.1中三路调幅信号的载波频率分别为250Hz、500Hz、1000Hz。如果调制信号具有带限连续频谱,无直流成分,则就是一般的抑制载波调幅信号。其频谱图是关于载波频率对称的2个边带(上下边带),在专业课通信原理中称为双边带抑制载波 (DSB-SC) 调幅信号,简称双边带 (DSB)信号。如果调制信号有直流成分,则就是一般的双边带调幅信号。其频谱图是关于载波频率对称的2个边带(上下边带),并包含载频成分。

(3)编程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,并绘图显示其幅频响应特性(损耗函数)曲线。

(4)调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mstg产生的信号st进行滤波,分离出st中的三路不同载波频率的调幅信号,并绘图显示的时域波形,观察分离效果。

4.信号产生函数mstg清单

function st=mstg

%产生信号序列向量st,并显示st的时域波形和频谱

%st=mstg 返回三路调幅信号相加形成的混合信号,长度N=1600

N=1600   %N为信号st的长度。

Fs=10000;T=1/Fs;Tp=N*T; %采样频率Fs=10kHz,Tp为采样时间

t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;

fc1=Fs/10;  %第1路调幅信号的载波频率fc1=1000Hz,

fm1=fc1/10;    %第1路调幅信号的调制信号频率fm1=100Hz

fc2=Fs/20;   %第2路调幅信号的载波频率fc2=500Hz

fm2=fc2/10;    %第2路调幅信号的调制信号频率fm2=50Hz

fc3=Fs/40;  %第3路调幅信号的载波频率fc3=250Hz,

fm3=fc3/10;    %第3路调幅信号的调制信号频率fm3=25Hz

xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); %产生第1路调幅信号

xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); %产生第2路调幅信号

xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); %产生第3路调幅信号

st=xt1+xt2+xt3;         %三路调幅信号相加

fxt=fft(st,N);          %计算信号st的频谱

%====以下为绘图部分,绘制st的时域波形和幅频特性曲线====================

subplot(3,1,1)

plot(t,st);grid;xlabel('t/s');ylabel('s(t)');

axis([0,Tp/8,min(st),max(st)]);title('(a) s(t)的波形')

subplot(3,1,2)

stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b) s(t)的频谱')

axis([0,Fs/5,0,1.2]);

xlabel('f/Hz');ylabel('幅度')

5.实验程序框图

图10.4.2  实验4程序框图

6.思考题

(1)请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。

(2)信号产生函数mstg中采样点数N=1600,对st进行N点FFT可以得到6根理想谱线。如果取N=1800,可否得到6根理想谱线?为什么?N=2000呢?请改变函数mstg中采样点数N的值,观察频谱图验证您的判断是否正确。

(3)修改信号产生函数mstg,给每路调幅信号加入载波成分,产生调幅(AM)信号,重复本实验,观察AM信号与抑制载波调幅信号的时域波形及其频谱的差别。

提示:AM信号表示式:

7.实验报告要求

(1)简述实验目的及原理。

(2)画出实验主程序框图,打印程序清单。

(3)绘制三个分离滤波器的损耗函数曲线。

(4)绘制经过滤波分离出的三路调幅信号的时域波形。

(5)简要回答思考题。

调用函数mstg产生st,自动绘图显示st的时域波形和幅频特性曲线

调用ellipord和ellip分别设计三个椭圆滤波器,并绘图显示其幅频响应特性曲线

调用filter,用三个滤波器分别对信号st进行滤波,分离出三路不同载波频率的调幅信号y1(n)、y2(n)和y3(n)

绘图显示y1(n)、y2(n)和y3(n)的时域波形

结束

更多相关推荐:
IIR数字滤波器设计及软件实现实验报告

实验四IIR数字滤波器设计及软件实现实验报告实验四IIR数字滤波器设计及软件实现实验报告一实验目的1熟悉用双线性变换法设计IIR数字滤波器的原理与方法2学会调用MATLAB信号处理工具箱中滤波器设计函数或滤波器...

数字信号处理-IIR数字滤波器设计及软件实现实验报告

电子信息工程系学生实验报告实验课程名称数字信号处理实验项目名称IIR数字滤波器设计及软件实现实验时间20xx年06月01日班级座号姓名电子信息工程学院编制实验预习部分一实验目的1熟悉用双线性变换法设计IIR数字...

IIR数字滤波器设计实验报告

西北工业大学matlab实验报告实验三IIR数字滤波器设计实验报告一实验目的1通过仿真冲激响应不变法和双线性变换法2掌握滤波器性能分析的基本方法二实验要求1设计带通IIR滤波器2按照冲激响应不变法设计滤波器系数...

实验四 IIR数字滤波器的设计实验报告

数字信号处理实验报告数字信号处理实验报告实验四IIR数字滤波器的设计学班学指导教生姓名级号师张志翔电子信息工程1203班12401720xx220xx429115数字信号处理实验报告实验四IIR数字滤波器的设计...

matlab实验报告 IIR数字滤波器设计

实验报告姓名学号班级组号李鹏博20xx300704030411021实验名称课程名称实验室名称实验日期IIR数字滤波器设计数字信号处理航海西楼30320xx0620一实验目的要求掌握IIR数字滤波器设计的冲激响...

IIR数字滤波器设计及软件实现 实验报告

实验报告实验四IIR数字滤波器设计及软件实现1实验目的1熟悉用双线性变换法设计IIR数字滤波器的原理与方法2学会调用MATLAB信号处理工具箱中滤波器设计函数或滤波器设计分析工具fdatool设计各种IIR数字...

数字信号实验报告 IIR数字滤波器设计

实验报告课程名称数字信号处理实验项目IIR数字滤波器设计实验二IIR数字滤波器设计一实验目的1熟悉用双线性变换法设计IIR数字滤波器的原理与方法2掌握数字滤波器的计算机软件实现方法3通过观察对实际心电图信号的滤...

实验8 IIR数字滤波器设计综合实验(预习报告)

实验8IIR数字滤波器设计综合实验1实验程序及运行结果信号产生函数mstgmfunctionstmstg产生信号序列向量st并显示st的时域波形和频谱stmstg返回三路调幅信号相加形成的混合信号长度N1600...

8.用双线性变换法设计IIR数字滤波器 - 数字信号处理实验报告

计算机与信息工程学院验证性实验报告一实验目的1熟悉用双线性变换法设计IIR数字滤波器的原理与方法2掌握数字滤波器的计算机仿真方法3通过观察对实际心电图信号的滤波作用获得数字滤波的感性知识二实验内容和要求1用双线...

实验四-IIR数字滤波器的设计

实验四IIR数字滤波器的设计1实验目的1掌握脉冲响应不变法和双线性变换法设计IIR数字滤波器的具体方法和原理熟悉双线性变换法和脉冲响应不变法设计低通带通IIR数字滤波器的计算机编程2观察双线性变换法和脉冲响应不...

基于DSP的IIR数字滤波器 (设计实验)(汇编语言)

IIR数字滤波器设计实验一实验目的1了解IIRInfiniteImpulseResponse无限冲激响应滤波器原理及使用方法2了解使用MATLAB语言设计IIR滤波器的方法3了解DSP对IIR滤波器的设计及编程...

基于matlab的IIR数字滤波器课程设计报告

数字信号处理课程设计报告姓名韩斌学号20xx12130专业通信工程院系信息工程学院指导教师陈黎霞王玲一课题名称基于matlab的IIR滤波器设计二课题意义数字滤波器是具有一定传输选择特性的数字信号处理装置其输入...

iir数字滤波器的设计实验报告(21篇)