收藏 分销(赏)

数字信号处理教程答案.doc

上传人:精**** 文档编号:3135855 上传时间:2024-06-19 格式:DOC 页数:172 大小:5.85MB
下载 相关 举报
数字信号处理教程答案.doc_第1页
第1页 / 共172页
数字信号处理教程答案.doc_第2页
第2页 / 共172页
数字信号处理教程答案.doc_第3页
第3页 / 共172页
数字信号处理教程答案.doc_第4页
第4页 / 共172页
数字信号处理教程答案.doc_第5页
第5页 / 共172页
点击查看更多>>
资源描述

1、 数字信号处理教程课后习题及答案目录第一章 离散时间信号与系统第二章 Z变换第三章 离散傅立叶变换第四章 快速傅立叶变换第五章 数字滤波器的基本结构第六章 无限长单位冲激响应(IIR)数字滤波器的设计方法第七章 有限长单位冲激响应(FIR)数字滤波器的设计方法第八章 数字信号处理中有限字长效应 第一章 离散时间信号与系统1 .直接计算下面两个序列的卷积和 请用公式表示。分析:注意卷积和公式中求和式中是哑变量( 看作参量), 结果中变量是 , 分为四步 (1)翻褶( -m ),(2)移位( n ),(3)相乘, 如此题所示,因而要分段求解。2 .已知线性移不变系统的输入为,系统的单位抽样响应 为

2、,试求系统的输出,并画图 分析:如果是因果序列可表示成=,例如小题(2)为=1,2,3,3,2,1 ; ; 卷积和求解时,的分段处理。3 .已知 ,通过直接计算卷积和的办法,试确定单位抽样响应为 的线性移不变系统的阶跃响应。4. 判断下列每个序列是否是周期性的,若是周期性的,试确定其周期:分析:序列为或时,不一定是周期序列,当整数,则周期为;当无理数 ,则不是周期序列。 5. 设系统差分方程为: 其中为输入,为输出。当边界条件选为 试判断系统是否是线性的?是否是移不变的?分析:已知边界条件,如果没有限定序列类型(例如因果序列、反因果序列等),则递推求解必须向两个方向进行(n 0及n 0)。 6

3、.试判断: 是否是线性系统?并判断(2),(3)是否是移不变系统?分析:利用定义来证明线性:满足可加性和比例性, 移不变性:输入与输出的移位应相同Tx(n-m)=y(n-m)。 7. 试判断以下每一系统是否是(1)线性,(2)移不变的? 分析:注意:T x(n) = g(n) x(n) 这一类表达式,若输入移位m,则有x(n)移位变成x(n-m),而g(n)并不移位,但y(n)移位m则x(n)和g(n)均要移位m 。8. 以下序列是系统的单位抽样响应,试说明系统是否是(1)因果的,(2)稳定的? 分析:注意:0!=1,已知LSI系统的单位抽样响应,可用来判断稳定性,用h(n)=0,n0 来判断

4、因果性。9列出下图系统的差分方程,并按初始条件,求输入为时的输出序列,并画图表示。分析:“信号与系统”课中已学过双边Z变换,此题先写出H(z) 然后利用Z反变换(利用移位定理)在时域递推求解;也可直接求出序列域的差分方程再递推求解注意输入为u(n)。解:系统的等效信号流图为: 10. 设有一系统,其输入输出关系由以下差分方程确定 设系统是因果性的。 试求:分析:小题(a)可用迭代法求解 小题(b)要特别注意卷积后的结果其存在的n值范围。 分析:要想时域抽样后不产生失真的还原出原信号,则抽样频率()必须大于最高信号频率( )的2倍,即满足。解:根据奈奎斯特定理可知:分析:由于可知的非零范围为,h

5、(n-m) 的非零范围为解:按照题意,在区间之外单位抽样响应 皆为零;在区间 之外输入皆为零, 将两不等式相加可得:,在此区间之外,的非零抽样互不重叠,故输出皆为零。由于题中给出输出除了区间之外皆为零,所以有: 第二章 Z变换1 求以下序列的z变换,并画出零极点图和收敛域。分析:Z变换定义,n的取值是的有值范围。Z变换的收敛域是满足的z值范围。 解:(1) 由Z变换的定义可知: 解:(2) 由z变换的定义可知: 解:(3) 解: (4) , 解:(5) 设 则有 而 因此,收敛域为 :解:(6) 2 . 假如的z变换代数表示式是下式,问可能有多少不同的收敛域。 分析:解 : 对X(Z)的分子和

6、分母进行因式分解得 X(Z)的零点为 : 1/2 , 极点为 : j/2 , -j/2 , -3/4 X(Z)的收敛域为 : (1) 1/2 | Z | 3/4 ,为双边序列, 请看 (2) | Z | 1/2, 为左边序列,请看 (3) | Z | 3/4 , 为右边序列, 请看 分析:长除法:对右边序列(包括因果序列)H(z)的分子、分母都要按z的降幂排列,对左边序列(包括反因果序列)H(z)的分子、分母都要按z的升幂排列。部分分式法:若X(z)用z的正幂表示,则按X(z)/z 写成部分分式,然后求各极点的留数,最后利用已知变换关系求z反变换可得x(n)。留数定理法:(1)(i)长除法:

7、所以:(1)(ii)留数定理法: , 设 c为内的逆时针方向闭合曲线: 当时,在c内有一个单极点 则 (1)(iii)部分分式法: 因为 所以 (2)(i). 长除法: ,因而 是左边序列,所以要按的升幂排列: 所以 (2)(ii)留数定理法: 内的逆时针方向闭合曲线 在c外有一个单极点 在c内有一个单极点 综上所述,有:(2)(iii). 部分分式法: 则 因为 则是左边序列 所以 (3)(i). 长除法:因为极点为,由可知,为因果序列, 因而要按 的降幂排列: 则 所以(3)(ii). 留数定理法:内的逆时针方向闭合曲线。 (3)(iii). 部分分式法: 则 所以 4. 有一右边序列 ,

8、其 变换为(a) 将上式作部分分式展开(用 表示),由展开式求 。(b) 将上式表示成 的多项式之比,再作部分分式展开,由展开式求 ,并说明所得到的序列与(a)所得的是一样的。注意:不管哪种表示法最后求出x(n)应该是相同的。解:(a) 因为且x(n)是右边序列 所以 (b) 5对因果序列,初值定理是,如果序列为 时,问相应的定理是什么? ,其z变换为: 分析:这道题讨论如何由双边序列Z变换来求序列初值,把序列分成因果序列和反因果序列两部分,它们各自由求表达式是不同的,将它们各自的相加即得所求。 若序列的Z变换为: 由题意可知:X(Z)的收敛域包括单位圆则其收敛域应该为: 6. 有一信号,它与

9、另两个信号和的 关系是: 其中 , 已知 , 分析:解:根据题目所给条件可得: 而 所以 7. 求以下序列的频谱。 (1) (2) (3) (4) 分析:可以先求序列的Z变换再求频率即为单位圆上的Z变换,或者直接求序列的傅里叶变换解:对题中所给的先进行z变换再求频谱得: 8. 若是因果稳定序列,求证:分析:利用时域卷积则频域是相乘的关系来求解再利用的傅里叶反变换,代入n = 0即可得所需结果。证明: 9求的傅里叶变换。分析: 这道题利用傅里叶变换的定义即可求解,但最后结果应化为模和相角的关系。 解:根据傅里叶变换的概念可得: 10. 设是如下图所示的信号的傅里叶变换,不必求出,试完成下列计算:

10、 (a) (b) (c) (d) 分析:利用序列傅里叶变换的定义、它的导数以及帕塞瓦公式解:由帕塞瓦尔公式可得: 即由帕塞瓦尔公式可得:11已知有傅里叶变换,用表示下列信号的 傅里叶变换。 (a)(b) (c) 分析:利用序列翻褶后移位关系以及频域的取导数关系式来求解。解: (c) 则 而 所以 12. 已知用下列差分方程描述的一个线性移不变因果系统 (a) 求这个系统的系统函数,画出其零极点图并指出其收敛区域; (b) 求此系统的单位抽样响应; (c) 此系统是一个不稳定系统,请找一个满足上述差分方程的稳 定的(非因果)系统的单位抽样响应。 分析: 则 ,要求收敛域必须知道零点、极点 。收敛

11、域为Z平面某个圆以外,则为因果系统(不一定稳定),收敛域若包括单位圆,则为稳定系统(不一定因果)。(a) 对题中给出的差分方程的两边作Z变换,得: 所以 零点为z=0,极点为 因为是因果系统,所以|z|1.62是其收敛区域。 零极点图如右图所示。 右边是本题的零极点图。 由于的收敛区域不包括单位圆,故这是个不稳定系统。(c) 若要使系统稳定,则收敛区域应包括单位圆,因此选的收敛区域为 ,即 ,则 中第一项对应一个非因果序列,而第二项对应一个因果序列。 从结果可以看出此系统是稳定的,但不是因果的。13. 研究一个输入为和输出为的时域线性离散移不变系 统,已知它满足 并已知系统是稳定的。试求其单位

12、抽样响应。分析:在Z变换域中求出,然后和题12(c)一样分解成部分分式分别求Z反变换。解: 对给定的差分方程两边作Z变换,得: ,为了使它是稳定的,收敛区域必须包括即可求得 14.研究一个满足下列差分方程的线性移不变系统,该系统 不限定为因果、稳定系统。利用方程的零极点图,试求 系统单位抽样响应的三种可能选择方案。 解 : 对题中给定的差分方程的两边 作Z变 换,得:因此 其零点为 极点为 , 因为该系统不限定为因果,稳定系统,所以其收敛域情况有三种,分别如左图所示。 收敛域情况有: 零极点图一: 零极点图二: 零极点图三:注:如果想要参看具体题解,请先选择方案,然后单击 解答 按键即可。(1

13、) 按12题结果(此处z1=2, z2=1/2),可知当收敛区域为,则系统是非稳定的,但是因果的。其单位抽样响应为: (2) 同样按12题,当收敛区域为 ,则系统是稳定的但是非因果的。其单位抽样响应为:(其中 ) (3) 类似 , 当收敛区域为时,则统是非稳定的,又是非因果的。 其单位抽样响应为: (其中 ) 15. 有一个用以下差分方程表示的线性移不变因果系统 当激励时,求系统的响应。请用z变换来求解。 分析:两种解法:直接由Z变换Y(z)的关系可得到y(n),由Y(z)用留数法可求得y(n)。解法一: 已知, 将上式进行Z变换,得: 因此 令,解法二: 差分方程进行Z变换后得: 其中 其收

14、敛区域为。因为是因果系统,且当时等于零,所以 当时,采用围线积分法,其中围线C包围三个极点,所以 16. 下图是一个因果稳定系统的结构,试列出系统差分方程,求系统函数。当 时,求系统单位冲激响应,画出系统零极点图和频率响应曲线。分析:解法一:利用此系统是一阶系统写出差分方程,令其二阶项系统为零,可得一阶差分方程,取Z变换求得H(z)从而求得h(n)。解法二:将系统用流图表示,改变流图中两个一阶节的级联次序(线性系统服从交换定理),然后写出差分方程,再取Z变换求得H(z)从而求得h(n)。解法一:由图示可得 由方框图可看出:差分方程应该是一阶的 则有 因为此系统是一个因果稳定系统 ; 所以其收敛

15、 解法二: 将图P2-11 画成流图结构,并化简如下: 由于线性流图的级联结构可以改变级联次序,因而上图又可化成: 由这个流图即可很方便地写出其线性差分方程: 取z变换可得: 所以 (由于系统是因果稳定的) 17设是一离散时间信号,其z变换为,对下列信 号利用求它们的z变换:(a) ,这里记作一次差分算子,定义为: (b) (c)分析:式序列的抽取序列,是内插零值序列(不是内插序列),解题的关键是要进行变量变换,以得到与的Z变换相似的表达式。解:(a) (b) , (c)由此可设 第三章 离散傅立叶变换1.如下图,序列x(n)是周期为6的周期性序列,试求其傅立叶级数的系数。计算求得: 解:在一

16、个周期内的计算值 7 。10 。解: (a)方法一: 方法二证明( ):所以:(1)+(2) 得:2) 由于:(4)+(5)得:(3)与(6)比较可知:同理可证:(b) 利用(a)的结果: 证明: 第四章 快速傅立叶变换 解: 解: 直接计算: 复乘所需时间: 复加所需时间: 用FFT计算: 复乘所需时间: 复加所需时间:流图如下图所示:由(1)式可得的路径,如下表所示: k0 1 2 3 4 5 6 7 8 9 0.8 0.67 0.56 0.46 0.39 0.32 0.27 0.22 0.19 0.16arg 10. 当实现按时间抽取快速傅立叶变换算法时,基本的蝶形计算 利用定点算术运算

17、实现该蝶形计算时,通常假设所有数字都已按一定比例因子化为小于1。因此在蝶形计算的过程中还必须关心溢出问题。(a) 证明如果我们要求 则在蝶形计算中不可能出现溢出,即 似乎更容易些,也更适合些。问这些条件是否足以保证在蝶形计算中不会出现溢出?请证明你的回答。证明:(a) 解:(a)若直接利用10点快速傅立叶变换算法,则:将n为偶数与n为奇数的部分分开,可得:(b) 如考虑利用线性调频z变换算法,则12. 我们希望利用一个单位抽样响应为N=50个抽样的有限冲激响应滤波 器来过滤一串很长的数据。要求利用重叠保留法通过快速傅立叶变换 来实现这种滤波器,为了做到这一点 ,则:(1) 输入各段必须重叠P个

18、抽样点;(2) 我们必须从每一段产生的输出中取出Q个抽样点,使这些从每一段得到的抽样连接在一起时,得到的序列就是所要求的滤波输出。假设输入的各段长度为100个抽样点,而离散傅立叶变换的长度为128点。进一步假设,圆周卷积的输出序列标号是从n=0到n=127。则:(a)求P ; (b)求Q; (c)求取出来的Q个点之起点和终点的标 号,即确定从圆周卷积的128点中要取出哪些点,去和前一段的 点衔接起来。解:(a) 由于用重叠保留法,如果冲激响应 h(n) 的点数为N点,则圆周卷积 结果的前面的(N-1)个点不代表线 性卷积结果。故每段重叠点数P为 P=N 1 =50 1=49(b) 每段点数为

19、27 =128,但其中只 有100个是有效输入数据,其余 28个点为补充的零值点。因而 各段的重叠而又有效的点数Q为Q=100 P=100 49 =51(c) 每段128 个数据点中,取出来的Q个点的序号为 n=49 到 n=99。用这些点和前后段取出的相应点连接起来,即可得到原来的长输入序列。 另外,对于第一段数据不存在前一 段问题,故在数据之前必须加上P=N 1 =49个 零值点,以免丢失数据。13. 请用C语言编写程序: (1) 按频率抽取的FFT算法 (2) 分裂基FFT算法解:(1) /*Free_Copy*/ /* C语言编写的频率抽取FFT算法(最大计算64点)*/ /* 输入:

20、 序列点数、序列值 * / /* 输出: 序列FFT变换后的数值及反变换(应与原序列相同 ) */ #include conio.h #include math.h #include stdio.h #define N 64 #define PI 3.1415926 #define w0 (0.125*PI) #define Cmul(a,b,c) a.x=b.x*c.x-b.y*c.y;a.y=b.x*c.y+b.y*c.x; #define Cequal(a,b) a.x=b.x;a.y=b.y; #define Cadd(a,b,c) a.x=b.x+c.x;a.y=b.y+c.y; #

21、define Csub(a,b,c) a.x=b.x-c.x;a.y=b.y-c.y; #define Wn(w,r) w.x=cos(2.0*PI*r/n);w.y=-sin(2.0*PI*r/n); struct comp float x; float y; ; void main() int i,j,nu2,nm1,n,m,le,le1,k,ip,z; int flag,f,n1; struct comp aN,t,t1,w,d; float a_ipx,m1; printf(nThis program is about FFT by DIF way. ); printf(nplease

22、 enter N : ); scanf(%d,&n1); n=n1; m1=log(n1)/log(2); m=log(n1)/log(2); if (m!=m1) n=pow(2,m+1); for(i=0;in;i+) ai.x=ai.y=0.0; printf(n); for(i=0;in1;i+) printf(nplease enter data(%d)_Re: ,i); scanf(%f,&ai.x); printf(nplease enter data(%d)_Im: ,i); scanf(%f,&ai.y); for(z=0;z=1;m-) le=pow(2,m); flag+

23、; le1=le/2; for( j=0;jle1;j+) for (i=j;i=(n-1);i+=le) ip=i+le1; Cequal(t,ai); Cequal(t1,aip); f=(int) (i*pow(2,flag)%n; Wn(w,f); Cadd(ai,t,t1); Csub(aip,t,t1); a_ipx=aip.x; if (z=1) w.y*=-1; aip.x=aip.x*w.x-aip.y*w.y; aip.y=a_ipx*w.y+aip.y*w.x; nu2=n/2; nm1=n-2; j=0;i=0; while(i=nm1) if (ij) Cequal(

24、d,aj); Cequal(aj,ai); Cequal(ai,d); k=nu2; while(k=j) j=j-k;k=k/2; j=j+k; i=i+1; if(z=0) printf(n序列的fft是:nn); else printf(n用ifft计算出的原序列是:nn ) ; for(i=0;i=0) printf( + %7.3f j n,ai.y); else printf( - %7.3f j n,fabs(ai.y); ai.y= -ai.y; else printf( %7.3f,ai.x/n); ai.y=-ai.y/n; if (ai.y=0) printf( + %7

25、.3f j n,ai.y); else printf( - %7.3f j n,fabs(ai.y); printf(n); (2);分 裂 基 FFT 算 法 程 序 /*Free_Copy*/ /*主程序:64点分裂基FFT算法*/ /*输入: 64点任意序列*/ /*输出: 序列的FFT变换*/ #include conio.h; #includemath.h #includestdio.h #define PI 3.1415926 #define N 128 void main() float xN,yN,xt; float cc1,cc3,ss1,ss3; float r1,r2,r

26、3,s1,s2,a,a3,e,m1; int n,n1,m,j,k,i; int is,id,i0,i1,i2,i3,n2,n4; printf(nThis program is about FFT by SPEFT way. ); printf(nplease enter n : ); scanf(%d,&n1); n=n1; m1=log(n1)/log(2); m=log(n1)/log(2); if (m!=m1) n=pow(2,m+1); for(i=0;i=N;i+) xi=yi=0.0; printf(n); for(i=1;i=n1;i+) printf(nplease en

27、ter data(%d)_Re: ,i); scanf(%f,&xi); printf(nplease enter data(%d)_Im: ,i); scanf(%f,&yi); j=1; for (i=1;i=n-1;i+) if (ij) xt=xj; xj=xi; xi=xt; xt=yj; yj=yi; yi=xt; k=n/2; while (kj) j=j-k; k=k/2; j=j+k; is=1; id=4; while (isn) for (i0=is;i0=n;i0+=id) i1=i0+1; r1=xi0; xi0=r1+xi1; xi1=r1-xi1; r1=yi0;

28、 yi0=r1+yi1; yi1=r1-yi1; is=2*id-1; id=4*id; n2=2; for (k=2;k=m;k+) n2=n2*2; n4=n2/4; e=2.0*PI/n2; a=0.0; for (j=1;j=n4;j+) a3=3.0*a; cc1=cos(a); ss1=sin(a); cc3=cos(a3); ss3=sin(a3); a=j*e; is=j; id=2*n2; while (isn) for (i0=is;i0=n-1;i0+=id) i1=i0+n4; i2=i1+n4; i3=i2+n4; r1=xi2*cc1+yi2*ss1; s1=yi2*cc1-xi2*ss1; r2=xi3*cc3+yi3*ss3; s2=y i3*cc3-xi3*ss3; r3=r1+r2; r2=r1-r2; r1=s1+s2; s2=s1-s2; xi2=xi0-r3; xi0=xi0+r3; xi3=xi1-s2; xi1=xi1+s2; yi2=yi0-r1; yi0=yi0+r1; yi3=yi1+r2; yi1=yi1-r2; is=2*id-n2+j; id=4*id; printf(n分裂基fft结果是: n ); for (i=1;i=n;i+)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服