实验4 徐凯

发布 2023-04-19 11:46:28 阅读 6673

电子科技大学。

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

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

三、实验原理:

一. 数字滤波器设计:

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信号的程序。

clear all;

x=randn(10,1)>0;

fl=2000;fh=4000;fs=20000;

ts=1/500;%码元速率。

tt=(0:1/fs:ts);

t=[tt;tt+ts;tt+2*ts;tt+3*ts;tt+4*ts;tt+5*ts;tt+6*ts;tt+7*ts;tt+8*ts;tt+9*ts];

y=zeros(10,length(tt));

i=1; 对输入的信号进行fsk调制。

while i<=10

y(i,:)x(i)*sin(2*pi*fh*t(i,:)x(i)*sin(2*pi*fl*t(i,:)

i=i+1;

end t=reshape(t',length(tt)*10,1);

y=reshape(y',length(tt)*10,1);

subplot(211);plot(t,y);

title('fsk信号的时域图形');

n=length(y);

r=fft(y)/n;r=fftshift(r);

f=linspace(-fs/2,fs/2,n);

subplot(212);

plot(f,abs(r));

set(gca,'xtick',-fs/2:5000:fs/2);

title('fsk信号的频谱图');

2) fir滤波器设计程序。

因为阻带的最小衰减为40db ,所以可以选汉宁窗。

close all

fp=2200;fs=3500;rp=1;rs=40;

fp=20000;

wp=fp*2*pi/fp;

ws=fs*2*pi/fp;

wc=(wp+ws)/2;

dw=ws-wp;

m=ceil(3.11*pi/dw);

n=2*mb=fir1(n,wc/pi,hann(n+1));

h,omega] =freqz(b,1,512);

subplot(2,1,1),plot (omega/pi,20*log10(abs(h)))grid;

title('magnitude of h(e^j\omega)')

xlabel('\omega/\pi');ylabel('magnitude')

subplot(2,1,2),plot(omega/pi,angle(h));grid;

title('phase of the h(e^j\omega)')

xlabel('\omega/\pi');ylabel('gain, db');

运行结果:n=48

3) iir滤波器设计程序。

我选择用butterworth滤波器设计该低通滤波器:

close all

fp=2200;fs=3500;rp=1;rs=40;

fp=20000;

wp=fp*2/fp;

ws=fs*2/fp;

n,wn] =buttord(wp,ws,rp,rs)

num,den] =butter(n,wn);

[h,omega] =freqz(num,den,512);

subplot(2,1,1),plot (omega/pi,20*log10(abs(h)))grid;

title('magnitude of h(e^j\omega)')

学习徐前凯先进事迹心得体会 平民英雄徐前凯

学习徐前凯先进事迹心得体会 平民英雄徐前凯。近日,重庆市荣昌区一名党员感动了全中国人。为救下一位正在横穿铁轨的老人,身为火车站值班员的徐前凯不顾自身安全跳下列车,救下了老人,而自己却因躲避不及,被火车碾压,永远失去了右腿。徐前凯的英雄事迹在短短几日内传遍了络,成为了大家学习的楷模。学习徐前凯就是要学...

机械原理实验徐馨

实验报告。实验课程 机械原理。学院 机电工程学院。学生姓名 徐馨。学号 5901115192 专业班级 机制157 时间 2017年5月18日周四上午9 00 1 目的 1 掌握用范成法制造渐开线齿轮的基本原理 2 了解渐开线齿轮产生根切现象的原因和避免根切的方法 3 分析比较标准齿轮和变位齿轮的异...

学习徐前凯先进事迹心得体会

7月6日下午,成都铁路局重庆车务段荣昌火车站的值班员徐前凯,不顾个人安危从急刹滑行的车列跳下,救下一位横穿铁路的老人,而自己却永远失去右腿。从徐前凯跳下车,到他将老人推开,整个过程仅仅5秒钟时间。生死攸关之际,徐前凯本来有机会跳出铁道保护自己,但他却并没有那样做,而是与死神赛跑,救出了老人。也许有人...