数字信号处理课程设计姓名:学号:专业:班级:指导老师:目录题目一:离散时间序列的时域分析 (2)1.1实现离散时间序列 (2)1.2序列的卷积 (2)题目二:利用DFT进行周期信号频谱分析 (4)2.1连续信号频谱分析比较 (5)2.2利用DFT进行运算 (7)题目三:离散系统的分析 (9)3.1求系统的响应 (9)3.2分析系统的频域特性 (10)题目四:数字滤波器的设计 (12)4.1高通滤波器的设计: (13)总结: (16)题目一:离散时间序列的时域分析对离散时间序列的时域分析,通过MATLAB进行离散时间序列的描述,对离散时间序列进行卷积运算,将不同形式的信号波形用不同的时间函数来描述,实现信号的卷积运算。
1.1实现离散时间序列(1)x0=2*sin(pi/3*n0+3*pi/4)(2)x1=2^n1(3)单位抽样序列(4)单位阶跃序列程序如下:A=2;N=20;phi=3*pi/4;w=pi/3;n0=-5:0.5:10;x0=A*sin(w*n0+phi);a=2;N=20;n1=0:0.3:6;x1=a.^n1;n2=-20:20;x2=[zeros(1,20),1,zeros(1,20)];n3=-20:20;x3=[zeros(1,20),1,ones(1,20)];subplot(2,2,1);plot(n0,x0);stem(n0,x0);title('正弦序列');ylabel('x(n)');xlabel('n');subplot(2,2,2);plot(n1,x1);stem(n1,x1);title('指数序列');xlabel('n');ylabel('x(n)');subplot(2,2,3);stem(n2,x2);title('单位抽样序列');xlabel('n');ylabel(') (n');subplot(2,2,4);stem(n3,x3);title('单位阶跃序列');xlabel('n');ylabel('u(n)');1.2序列的卷积程序如下:A=2;N=20;phi=3*pi/4;w=pi/3;n0=-5:0.5:10; x0=A*sin(w*n0+phi); a=2;N=20; n1=0:0.3:6; x1=a.^n1; y=conv(x0,x1);stem([0:length(x0-1),x1]);正弦序列x (n )n指数序列nx (n )nδ(n ))nu (n )10203040506070正弦序列与指数序列卷积题目二:利用DFT 进行周期信号频谱分析连续周期信号相对于离散周期信号,连续非周期信号相对于离散非周期信号,都可以通过时域抽样定理建立相互关系。
因此,在离散信号的DFT 分析方法基础上,增加时域抽样的步骤,就可以实现连续信号的DFT 分析。
应用离散傅里叶变换DFT ,分析连续周期信号x T (t)的频谱。
连续周期信号在满足一定条件下,可以通过傅立叶级数(CTFS )展开为一系列正弦信号的线性叠加,其频谱函数X (k Ω)是离散频率的复函数,因而周期信号的频谱结构具有离散性和谐波性。
⎰-Ω-=Ω2200)(1)(T T t jk dte t x T k X对x(t)以T 为间隔进行取样,长度为一个周期T 0 ,dt →T, ⎰∑→,)()(n x t x →,T 0=NT,得到Ten x T k X N n nTjk ∑-=Ω-=Ω1)(1)(=∑-=-120)(N n kn Nj en x T T π=)(1k X N连续周期信号的频谱求解步骤:(1) 根据取样定理,确定时域取样间隔T ; (2) 计算一个周期内的取样点数N 。
(3) 使用FFT 命令作N 点FFT 计算,求得X (k);(4) 最后求得连续周期信号的频谱为X (k Ω)= N 1X (k)2.1连续信号频谱分析比较例:利用DFT 近似分析连续信号x(t)=e^(-t)*u(t)的幅度频谱并与理论值比较,并分析二者产生误差的原因。
当Fs 分别为8Hz 、16Hz 和32Hz 时: Fs=8Hz 时,程序如下: Fs=8;T=1/Fs; ws=2*pi*Fs;N=60; %假设信号长度 L=512; %假设DFT 的点数detaf=N/(Fs*2);detafd=L/Fs; fprintf('分辨率为%f\n',detaf); fprintf('谱线间隔为%f\n',detafd); t=(0:N-1)*T;xk=exp(-1*t); X=fftshift(fft(xk,L)); w=(-ws/2+(0:L-1)*ws/L)/(2*pi); plot(w,abs(X));grid on ;频谱图如下:0123456789当Fs=16Hz 时,程序如下:Fs=16;T=1/Fs; ws=2*pi*Fs; N=60; %假设信号长度L=512; %假设DFT 的点数detaf=N/(Fs*2);detafd=L/Fs;fprintf('分辨率为%f\n',detaf); fprintf('谱线间隔为%f\n',detafd); t=(0:N-1)*T;xk=exp(-1*t); X=fftshift(fft(xk,L)); w=(-ws/2+(0:L-1)*ws/L)/(2*pi); plot(w,abs(X));grid on ;频谱图如下:024681012141618当Fs=16Hz 时,程序如下:Fs=64;T=1/Fs; ws=2*pi*Fs; N=60; %假设信号长度L=512; %假设DFT 的点数detaf=N/(Fs*2);detafd=L/Fs; fprintf('分辨率为%f\n',detaf); fprintf('谱线间隔为%f\n',detafd); t=(0:N-1)*T;xk=exp(-1*t); X=fftshift(fft(xk,L)); //fft 运算 w=(-ws/2+(0:L-1)*ws/L)/(2*pi); plot(w,abs(X));grid on ;频谱图如下:0510152025303540分析:有限长序列的DFT 仍是有限长序列,故其特别适合数字系统——它不仅具有重要的理论意义,且DFT 存在快速算法,所以仍用DFT 分析连续信号的频谱。
在利用DFT 分析连续信号频谱时,会出现混叠现象,频率泄漏,栅栏现象导致误差。
2.2利用DFT 进行运算例:考虑)52.0cos()48.0cos()(n n n x ππ+=1)取)100)((≤≤n n x 时,求)(n x 的DFT : X (k );2)将(1)中的)(n x 以补零方式使)(n x 加长到1000≤≤n ,求X (k ); 3)取)1000)((≤≤n n x ,求X (k )要求画出)(n x 和X (k ) 程序如下: N1=11;k1=0:N1-1; n=[0:10];xn=cos(0.48*pi*n)+cos(0.52*pi*n); subplot(3,2,1);stem(xn);title('xn'); y1=fft(xn,N1);subplot(3,2,2);stem(k1,abs(y1)); title('xn 11点DFT '); N2=101; k2=1:N2;n2=[0:100];xn2=[xn,zeros(1,N2-length(xn))]; subplot(3,2,3);stem(xn2);title('xn2'); y2=fft(xn,N2);subplot(3,2,4);stem(k2,abs(y2));title('补零方式Xk'); xn3=cos(0.48*pi*n2)+cos(0.52*pi*n2); subplot(3,2,5);stem(xn3);title('xn3'); y3=fft(xn3,N2);subplot(3,2,6);stem(k2,abs(y3));title('xn 101点DFT ');图形如下:-202xn0510xn 11点DFTxn2补零方式X kxn3xn 101点DFT离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。
我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。
快速傅里叶变换(FFT )并不是一种新的变换,它是离散傅里叶变换的一种快速算法。
题目三:离散系统的分析离散系统的时域方程为:∑∑==-=-Mk kNk kk n x pk n y d)()(其变换域分析方法如下:)()()(][][][][][ωωωjjjm e H e X e Y m n h m x n h n x n y =⇔-=*=∑∞-∞=频域系统的频率响应为 ωωωωωωωjN N j jM M j j j j e d e d d e p e p p e D e p e H ----++++++==......)()()(1010Z 域)()()(][][][][][z H z X z Y m n h m x n h n x n y m =⇔-=*=∑∞-∞=系统的转移函数为 NN MM z d z d d z p z p p z D z p z H ----++++++==......)()()(110110分解因式∏-∏-=∑∑==-=-=-=-Ni i Mi i Ni ik Mi ik z z Kzd z p z H 1111)1()1()(λξ ,其中i ξ和i λ称为零、极点。
在MATLAB 中,可以用函数[z ,p ,K]=tf2zp (num ,den )求得有理分式形式的系统转移函数的零、极点,用函数zplane (z ,p )绘出零、极点分布图;也可以用函数zplane (num ,den )直接绘出有理分式形式的系统转移函数的零、极点分布图。
另外,在MATLAB 中,可以用函数 [r ,p ,k]=residuez (num ,den )完成部分分式展开计算;可以用函数sos=zp2sos (z ,p ,K )完成将高阶系统分解为2阶系统的串联。