本科学生实验报告
学号 124090314 姓名 何胜金
学院 物电学院 专业、班级 12电子
实验课程名称 数字信号处理(实验)
教师及职称 杨卫平
开课学期 第三 至 第四学年 下 学期
填报时间 2015 年 4 月 20 日
云南师范大学教务处编印
第二篇:数字信号处理实验报告
实验一:信号、系统及系统响应
1. 实验目的
① 熟悉连续信号经过理想抽样前后的频谱变化关系,加深对时域抽样定理的理解。
② 熟悉时域离散系统的时域特性。
③ 利用卷积方法观察分析系统的时域特性。
④ 掌握序列傅里叶变换的计算机实验方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。
2. 实验原理与方法
(1)对一个连续信号xa(t)进行理想抽样的过程可用(1.1)式表示。 = δT(t) ,其中为xa(t)的理想抽样,δT(t)为周期冲激脉冲,即
的傅里叶变换为 =
下面导出用序列的傅里叶变换来计算的公式。
= =
= =
式中的xa(nT)就是采样后得到的序列x(n),即x(n) = xa(nT)
x(n)的序列傅里叶变换为X(ejω) =
为了在数字计算机上观察分析各种序列的频域特性,通常对X(ejω)在[0,2π]上进行M点采样来观察分析。对长度为N的有限长序列x(n),有
其中 , k = 0,1, …, M-1,通常M应取得大一些,以便观察谱的细节变化。取模||可绘出幅频待性曲线。
(2) 一个时域离散线性非移变系统的输入/输出关系为y(n) = x(n) * h(n) =
上述卷积运算也可以在频域实现(即卷积定理:时域卷积,频域相乘。)
Y(ejω) = X(ejω)H(ejω)
3. 实验内容
(1) 连续信号分析
① 连续时间信号的选择与运算
1 单边指数脉冲;xa(t)=E*exp(-at) (a>0) ;
2 双边指数脉冲;xa(t)= E*exp(-a*abs(t)) (a>0)
3 钟形信号:y=sinc(t)
4. 信号相加:;
5. 信号相乘:。
② 用MATLAB编制程序求连续时间非周期信号的傅氏变换Xa(jΩ)
③ 时域观察,频域分析
(2) 离散信号分析
① 离散时间非周期信号x(n)的生成
② 用MATLAB编制程序求序列x(n)的傅氏变换X(ejω)
③ 时域观察,频域分析
(3) 系统响应分析
① 生成实验用的输入序列x(n)和系统单位冲激响应序列h(n)
输入序列:x(n) = R10(n)
单位冲激响应序列:h(n) = δ(n) + 2.5δ(n-1) + 2.5δ(n-2) + δ(n-3)
② 时域离散信号、系统和系统响应分析
③ 卷积定理的验证
4. 思考题
在分析理想抽样序列特性的实验中,采样频率不同时,相应理想抽样序列的傅里叶变换频谱的数字频率度量是否都相同?它们所对应的模拟频率是否相同?为什么?
答:采样频率不同时,相应理想采样序列的傅里叶频谱的数字频率两不同,因为采样频率不同时,它们所对应的模拟频率也不相同。在不同采样频率下产生了不同的频谱图,由图形曲线的对比我们可以得出,在满足采样频率大于2fc时,傅里叶变换按照采样频率周期延拓时,产生的频谱不发生混叠。
5.实验仿真图及结论
(1) 单边指数脉冲;x=exp(2*t) ;
t=-5*pi:0.01*pi:5*pi;
x=exp(2*t);
plot(t,x);
(2) 双边指数脉冲;x= exp(-2*abs(t)) (a>0)
t=-3*pi:0.01*pi:3*pi;
x=exp(-2* abs(t));
plot(t,x)
(3)钟形信号
t=-4:0.01:4
y=sinc(t)
plot(t,y)
(4)信号相加:;
t=-5*pi:0.1*pi:5*pi;
f=cos(18*pi*t)+cos(20*pi*t);
plot(t,f);
(5)信号相乘:。
t=-5*pi:0.1*pi:5*pi;
f=sinc(t).*cos(20*pi*t);
plot(t,f);
(6)离散时间非周期信号x(n)
t=-10*pi:0.1*pi:10*pi;
xa= 4*exp(-2*t);
subplot(2,1,1);
plot(t,xa);
w=pi:0.1*pi:40*pi;
T=0.1;
n=1:1:40;
xn= 4*exp(-2*n);
f=fft(xn);
subplot(2,1,2);
stem(n,f);
(7)实验结论
通过实验我熟悉时域离散系统的时域特性。掌握了利用卷积方法观察分析系统的时域特性的方法。掌握了序列傅里叶变换的计算机实验方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析的方法。学会了软件的使用以及用于实验分析的好处。
实验二:用FFT做谱分析
1. 实验目的
(1) 进一步加深DFT算法原理和基本性质的理解(因为 FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。
(2) 熟悉FFT算法原理和FFT子程序的应用。
(3) 学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
2. 实验步骤 及原理
(1) 复习DFT的定义、性质和用DFT作谱分析的有关内容。
(2) 复习按时间抽选法FFT算法原理及相应的运算流图
(3) 编制信号产生子程序,产生以下典型信号供谱分析用:
x1(n) = R4(n) x1=ones(1,4)=[1,1,1,1]
x2(n) = x2=[1,2,3,4,4,3,2,1…0]
x3(n) =
x4(n) = cos(π/4)n
x5(n) = sin(π/8)n
x6(t) = cos8πt + cos16πt + cos20πt
应当注意,如果给出的是连续信号xa(t),则首先要根据其最高频率确定抽样频率fs以及由频率分辨率选择抽样点数N,然后对其进行软件抽样(即计算 x(n)=xa(nT),0≤n≤N-1),产生对应序列 x(n)。对信x6(t),频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。对周期序列,最好截取周期的整数倍进行谱分析,否则有可能产生较大的分析误差。请实验者根据DFT的隐含周期性思考这个问题。
(4) 编写主程序。调用FFT子程序(函数)计算信号的DFT,绘制|X(k)|曲线。
3.实验内容
(1) 对2中所给出的信号逐个进行谱分析。下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的抽样频率fs,供实验时参考。
x1(n) , x2(n) , x3(n) , x4(n) , x5(n):N = 8 , 16
x6(t):fs = 64(Hz) , N = 16 , 32 , 64
(2) 令x(n) = x4(n) + x5(n),用FFT计算8点和16点离散傅里叶变换,
X(k) = DFT [x(n)]
并根据DFT的对称性,由X(k)求出X4(k) = DFT [x4(n)]和X5(k) = DFT [x5(n)],并与(1) 中所得结果比较。[提示:取N = 16时,x4(n) = x4(N-n), x5(n) = - x5(N-n)。]
(3) 令x(n) = x4(n) + j x5(n),重复(2)。
4. 思考题
(1) 在N=8时,x2(n)和x3(n)的幅频特性会相同吗?为什么?N=16呢?
答:在N=8时, x2(n)和x3(n)的幅频特性会相同,在N=16时, x2(n)和x3(n)的幅频特性不相同。
(2) 如果周期信号的周期预先不知道,如何用FFT进行谱分析?
答:设一个定长的m值,先取2m,看2m/m的误差是否大,如大的话再取4m,看4m/2m的误差是否大,如不大,4m(4倍的m值)则可近似原来点的谱分析。
5. 实验仿真图及结论
(1) x1(n) = R4(n)
n=0:3;
X=ones(1,4);
X=abs(X);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(2) x2(n) =
n=0:7;
X=[1,2,3,4,4,3,2,1]
X=abs(X);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(3) x3(n) =
n=0:7;
X=[4,3,2,1,1,2,3,4]
X=abs(X);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(4) x4(n) = cos(π/4)n
n=0:7;
X=cos((pi/4)*n);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(5)x5(n) = sin(π/8)n
n=0:7;
X=sin((pi/8)*n);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(6)x6(t) = cos8πt + cos16πt + cos20πt
t=-5*pi:0.1*pi:5*pi;
fs=64;
X =cos(8*pi*t) + cos(16*pi*t) + cos(20*pi*t);
subplot(4,1,1);
plot(t,X);
X11=fft(X,16);
n1=0:15;
X11=abs(X11);
subplot(4,1,2);
stem(n1,X11);
X12=fft(X,32);
n2=0:31;
X12=abs(X12);
subplot(4,1,3);
stem(n2,X12);
X13=fft(X,64);
n3=0:63;
X13=abs(X13);
subplot(4,1,4);
stem(n3,X13);
(7)x(n) = x4(n) + x5(n)
n=0:7;
X=cos((pi/4)*n)+sin((pi/8)*n);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(8)x(n) = x4(n) + j x5(n)
n=0:7;
X=cos((pi/4)*n)+j*sin((pi/8)*n);
subplot(3,1,1);
stem(n,X);
X11=fft(X,8);
n1=0:7;
X11=abs(X11);
subplot(3,1,2);
stem(n1,X11);
X12=fft(X,16);
n2=0:15;
X12=abs(X12);
subplot(3,1,3);
stem(n2,X12);
(9)实验结论
FFT变换即快速傅里叶变换的性质同DFT即离散傅里叶变换相同。离散傅里叶变换有两个物理意义,一是,是对该序列的傅里叶变换w的抽样或者说对Z变换单位圆内的抽样。二是,将该序列进行周期延拓后的傅里叶级数变换的主值序列。
实验三:用双线性变换法设计IIR数字滤波器
1. 实验目的
(1) 熟悉用双线性变换法设计IIR数字滤波器的原理与方法。
(2) 掌握数字滤波器的计算机仿真方法。
(3) 通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
2. 实验步骤及原理
(1) 复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容,按照“2. 实验内容(1)”的要求设计满足指标的数字滤波器函数H(z)。
现给出满足本实验要求的数字滤波器系统函数:
H(z) =
= —— (3.1)
式中 Hk(z) = , k = 1 , 2 , 3 —— (3.2)
A = 0.09036
B1 = 1.2686 , C1 =-0.7051
B2 = 1.0106 , C2 =-0.3583
B3 = 0.9044 , C3 =-0.2155
由 (3.1) 式和(3.2)式可见,滤波器H(z)由三个二阶滤波器H1(z)、H2(z)和H3(z)级联组成,如图所示。
(2) 编写滤波器仿真程序,计算H(z)对心电图信号抽样序列x(n)的响应序列y(n)。
设yk(n)为第k级二阶滤波器Hk(z)的输出序列,yk-1(n)为输入序列,如图3.1所示。由(3.2)式可得到差分方程:
yk(n) = A yk-1(n) + 2A yk-1(n-1) + A yk-1(n-2) + Bk yk(n-1) + Ck yk(n-2)
当k = 1时,yk-1(n) = x(n)。所以H(z)对x(n)的总响应序列y(n)可以用顺序迭代算法得到。即依次对k = 1,2,3,求解差分方程 (3.3),最后得到y3(n) = y(n)。仿真程序就是实现上述求解差分方程和顺序迭代算法的通用程序。也可以直接调用MATLAB filter 函数实现仿真。
(3) 在通用计算机上运行仿真滤波程序,并调用通用绘图子程序,完成“2.实验内容(2)和(3) ”。
3. 实验内容
(1) 用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。设计指标参数为:在通带内频率低于0.2π时,最大衰减小于1dB;在阻带内[0.3π, π] 频率区间上,最小衰减大于15dB。
(2) 以0.02π为抽样间隔,打印出数字滤波器在频率区间[0, π/2]上的幅频响应特性曲线。
(3) 用所设计的滤波器对实际心电图信号抽样序列(在本实验后面给出)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
4. 思考题
用双线性变换法设计数字滤波器过程中,变换公式s = 中T的取值,对设计结果有无影响?为什么?
答:对设计结果没有影响。 因为,所以s=,,
只与信号本身有关,即s与T无关。
5. 实验仿真图及结论
(1) x(n)作为输入序列,滤除其中的干扰成分。
{x(n)}={-4, -2, 0, -4, -6, -4, -2, -4, -6, -6,
-4, -4, -6, -6, -2, 6, 12, 8, 0, -16,
-38,-60, -84, -90, -66, -32, -4, -2, -4, 8,
12, 12, 10, 6, 6, 6, 4, 0, 0, 0,
0, 0, -2, -4, 0, 0, 0, -2, -2, 0,
0, -2, -2, -2, -2, 0,}
程序代码:
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
WP=(2/T)*tan(wp/2);
WS=(2/T)*tan(ws/2);
[N,Wc]= buttord(WP,WS,Rp,As,'s');
[bt,at]=butter(N,Wc,'s')
[bd,ad ]=bilinear(bt,at,1/T)
[hd,wd]=freqz(bd,ad);
figure(1);
plot(wd/pi,abs(hd)),grid;
axis([0,1,0,1])
xlabel('w/pi');ylabel('abs(h)')
title('数滤波器的频率响应')
n=[1:56];
x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0] ;
y1=fft(x,64);
i=0:63;
figure(2);
subplot(2,2,1);
stem(n,x);title('心电图原始波形');
xlabel('n');ylabel('x');
subplot(2,2,2);
stem(i,abs(y1));title('心电图频谱');
xlabel('i');ylabel('abs(y1)');
y2=filter(bd,ad,x);
subplot(2,2,3);stem(y2);grid;
title('通过滤波器滤除频扰的时域波形y2');
y3=fft(y2,64);
z=0:63;
subplot(2,2,4);stem(z,abs(y3));
title('通过滤波器滤除频扰的心电图频谱');
xlabel('z');ylabel('abs(y3)');
(2) 双线性变换法的特点。
1.模拟滤波器经过双线性变换后,不存在频率特性的混叠失真,因而对模拟滤波器的
频率响应函数Ha(s) 无限带要求,而且能够直接用于设计低通、高通、带通、带阻等各种类型的数字滤波器。
2.与冲激响应不变法中模拟频率与数字频率之间的线性关系ω=ΩTs不同的是,双线
性变换法中模拟滤波器的频率与所转换成的数字滤波器的频率之间是非线性关系,但是,如果事先进行频率预畸变,这种非线性关系不会使所设计的数字滤波器的幅频特性受到影响。由于频率的非线性关系会产生相频特性失真,所以若对数字滤波器的相位特性要求较严,则不宜采用这种变换方法。
3.双线性变换方法比较容易,不需要将模拟系统函数进行部分分式分解。双线性变换法消除了多值变换性,也就消除了频谱混叠现象
(3) 数字滤波器的滤波过程与滤波作用。
由上述滤波前后的心电图信号波形知,数字滤波器的滤波过程就是将输入序列通过一定的运算变换成输出序列,滤波的作用就是通过一定的计算消除或削弱一些不需要的频率分量的干扰。