数字信号处理课程设计
一、课程设计目的:
1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2. 掌握信号分析与处理的基本方法与实现
3.提高综合运用所学知识独立分析和解决问题的能力; 4.熟练使用一种高级语言进行编程实现。
二、课程设计题目和具体设计(分题列出); (一)第一题
1.设计题目及设计要求
给定模拟信号:xa(t)?e?1000t
1)选择采样频率Fs = 5000Hz和合适的信号长度,采样得到序列 x1(n)。求并画出x1(n)及其序列傅里叶变换|X1(ejw)|。
2)选择采样频率Fs = 1000Hz和合适的信号长度,采样得到序列 x2(n)。求并画出x2(n)及其序列傅里叶变换|X2(ejw)|。
3)说明|X1(ejw)|与|X2(ejw)|间的区别,为什么? 2.设计思想及系统功能分析
本题主要考察信号的采样(奈奎斯特采样定律)以及采样后序列的序列傅里叶变换。设计思想为:先求出原信号的最高频率,此时可以确定奈奎斯特采样频率,再根据题目要求分别用不同的采样频率对信号进行采样,采样结果可根据采样频率与奈奎斯特采样频率的比较,得出是否发生频谱混叠。 3.关键部分的理论分析与计算
求解原信号的最高频率可以作为分析本题结果的关键部分,因为求不出奈奎斯特采样频率就无法判断频率为多少时会发生频谱混叠。本题中,原信号的最高频率为2000Hz,由此可知,奈奎斯特采样频率为4000Hz,所以当Fs=5000Hz时,不会发生频谱混叠;当Fs=1000Hz时,发生了频谱混叠,可以从幅频特性曲线上很容易的观察出来。 4.程序源代码
%第一题
t=-0.005:0.00005:0.005; xa=exp(-1000*abs(t)); %连续时间傅里叶变换 Wmax=2*pi*2000; K=500; k=0:1:K;
1
数字信号处理课程设计
W=k*Wmax/K;
Xa=xa*exp(-j*t'*W)*0.00005; Xa=real(Xa);
W=[-fliplr(W),W(2:501)]; Xa=[fliplr(Xa),Xa(2:501)]; figure(1); subplot(2,1,1); plot(t*1000,xa,'k'); xlabel('t in msec.'); ylabel('x_a(t)'); title('Analog Signal'); subplot(2,1,2);
plot(W/(2*pi*1000),Xa*1000,'k'); xlabel('Frequency in kHz'); ylabel('X_a(j\\omega)*1000');
title('continuous-time Fourier Transform');
%根据画出的频谱可以看出,该函数的最高频率近似为2000Hz,所以耐奎斯特采样频率为4000Hz
%(1)采样频率Fs = 5000Hz,得到序列x1(n) n=-24:25;%选择序列长度 Fs=5000;
x=exp(-1000*abs(n/Fs));figure(2);
subplot(3,2,1);stem(n/Fs,x,'.m');%此处换算到以t作为横坐标 title('x1(n)序列,Fs=5000');xlabel('t');ylabel('x1(n)'); %对x1(n)求序列傅里叶变换,并画出频谱图 w=pi*n/50;
X=abs(x*exp(-1*j*n'*w)); subplot(3,2,2);plot(w,X,'m');
title('x1(n)的序列傅里叶变换');xlabel('w');ylabel('X');
%(2)采样频率Fs=1000Hz,得到序列x2(n) n=-24:25;%选择序列长度 Fs=1000;
2
数字信号处理课程设计
x=exp(-1000*abs(n/Fs));
subplot(3,2,3);stem(n/Fs,x,'.m');%此处换算到以t作为横坐标 title('x1(n)序列,Fs=1000');xlabel('t');ylabel('x1(n)'); %对x1(n)求序列傅里叶变换,并画出频谱图 w=pi*n/50;
X=abs(x*exp(-1*j*n'*w)); subplot(3,2,4);plot(w,X,'m');
title('x1(n)的序列傅里叶变换');xlabel('w');ylabel('X');
%根据近似计算,此函数的带宽近似为2000Hz,根据奈奎斯特采样定理,现用Fs=4000Hz的采样频率进行采样,观察其序列傅里叶变换的频谱 %(2)采样频率Fs=1000Hz,得到序列x2(n) n=-24:25;%选择序列长度 Fs=4000;
x=exp(-1000*abs(n/Fs));
subplot(3,2,5);stem(n/Fs,x,'.m');%此处换算到以t作为横坐标 title('x1(n)序列,Fs=4000');xlabel('t');ylabel('x1(n)'); %对x1(n)求序列傅里叶变换,并画出频谱图 w=pi*n/50;
X=abs(x*exp(-1*j*n'*w)); subplot(3,2,6);plot(w,X,'m');
title('x1(n)的序列傅里叶变换');xlabel('w');ylabel('X');
5.测试数据及必要的理论分析与比较
由figure1可以看出,原信号的幅频特性曲线在F=2000Hz时,基本上趋近于0,可以得出原信号的最高频率是2000Hz,所以推出奈奎斯特采样频率为4000Hz;再根据figure2中Fs=5000Hz、1000Hz、4000Hz时的幅频特性曲线可以看出,Fs=5000Hz和Fs=4000Hz的频谱基本上是一致的,这是因为采样频率大于奈奎斯特采样频率,频谱不会发生混叠;而Fs=1000时的频谱和Fs=4000时的频谱有明显的不同,这是因为采样频率小于奈奎斯特采样频率,频谱发生了混叠,导致幅频特性曲线发生变化。
所以,由这一题可以充分的验证奈奎斯特采样定理的正确性。
3
数字信号处理课程设计
4
数字信号处理课程设计
(二)第二题
1.设计题目及设计要求
已知两系统分别用下面差分方程描述:
y1(n)?x(n)?x(n?1) y2(n)?x(n)?x(n?1)
试分别写出它们的传输函数,并分别打印H(ejw)~w曲线。说明这两个系统的区别。
2.设计思想及系统功能分析
本题主要考察传输函数的求解以及时域形式对系统的区别。设计思想为:先通过对时域信号就行序列傅里叶变换,将变换后的信号形式用DTFT的性质进行化简,便可得出频域形式的传输函数,然后再通过画图语句画出H(ejw)~w的曲线。
3.关键部分的理论分析与计算
关键部分应该就是求解系统的传输函数,由于对matlab不是太熟悉,这部分是通过在草稿纸上演算得出了传输函数,再利用matlab画出图形 4.程序源代码
%第二题
%要求系统的传输函数,可先求出传输函数的序列傅里叶变换,再通过求反序列傅里叶变换得到传输函数
%对于传输函数的傅里叶变换,可以先利用频域变换求出为:H1=1+exp(-j*w),H2=1-exp(-j*w);
%对H1和H2求IDTFT,得到传输函数h1和h2 w=-2*pi:0.001:2*pi;
H1=1+exp(-j*w);H2=1-exp(-j*w); a=[1];%系统函数的分母系数
b1=[1,1];b2=[1,-1];%系统函数的分子系数 h1=freqz(b1,a,w);%求其频率响应 h2=freqz(b2,a,w); %画图 figure(1);
subplot(211);plot(w/pi,abs(h1),'m');
title('H1的曲线');xlabel('w/pi');ylabel('H1'); subplot(212);plot(w/pi,abs(h2),'m');
title('H2的曲线');xlabel('w/pi');ylabel('H2');
5