数字信号处理实验讲义92.docx
- 文档编号:4031408
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:33
- 大小:299.38KB
数字信号处理实验讲义92.docx
《数字信号处理实验讲义92.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验讲义92.docx(33页珍藏版)》请在冰豆网上搜索。
数字信号处理实验讲义92
实验一常见离散信号产生和实现
一、实验目的
1.加深对常用离散信号的理解;
2.掌握matlab中一些基本函数的建立方法。
二、实验原理
1.单位抽样序列
如果
在时间轴上延迟了k个单位,得到
即:
2.单位阶跃序列
3.正弦序列
在MATLAB中,
n=0:
N-1;
x=A*sin(2*pi*f0*n/fs+phi)
4.复指数序列
在MATLAB中,
n=0:
N-1;
x=r*exp(j*w*n)
5.指数序列
在MATLAB中,
n=0:
N-1;
x=a.^n
三、实验内容实现和图形生成
1.五种基本函数的生成
程序如下:
(1)单位抽样序列
方法一:
%单位抽样序列和延时的单位抽样序列
n=0:
10;x1=[1zeros(1,10)];x2=[zeros(1,5)1zeros(1,5)];
subplot(1,2,1);stem(n,x1,'.');xlabel('时间序列n');ylabel('振幅');
title('单位抽样序列x1');gridon;
subplot(1,2,2);stem(n,x2,'.');xlabel('时间序列n');ylabel('振幅');
title('延时了5的单位抽样序列');gridon;
方法二:
先在matlab中定义单位抽样序列:
function[x,n]=impseq(n1,n2,n0)
n=[n1:
n2];
x=[(n-n0)==0];/n等于n0时1
在运行命令:
[x,n]=impseq(-5,5,3)
stem(n,x,'.');xlabel('n');title('单位抽样序列x');grid
(2)单位阶跃序列
方法一:
n=-4:
6;
u=[zeros(1,4)ones(1,7)];
stem(n,u,'.');xlabel('时间序列n');ylabel('振幅');title('单位阶跃序列');grid
所得的图形如下所示:
方法二;
先在matlab中定义单位阶跃序列:
function[x,n]=stepseq(n1,n2,n0)
n=[n1:
n2];
x=[(n-n0)>=0];
在运行命令:
[x,n]=stepseq(-5,5,3)
stem(n,x,'.');xlabel('n');title('单位阶跃序列x');grid
(3)正弦函数
n=-5:
20;
x=2*sin(pi*n/6+pi/3);stem(n,x,'.');xlabel('时间序列n');ylabel('振幅');
title('正弦函数序列x=2*sin(pi*n/6+pi/3)');gridon
(4)复指数序列
n=-5:
30;
x=2*exp(j*3*n);
stem(n,real(x),'.');xlabel('时间序列n');ylabel('振幅');title('复指数序列x=2*exp(j*3*n)的实部');gridon
图形如下:
(5)指数序列
n=1:
30;
x=1.2.^n;
stem(n,x,'.');xlabel('时间序列n');ylabel('振幅');title('指数序列x=1.2.^n');
gridon
2、绘出信号
,当
、
、
、
、
时的信号实部和虚部图;
程序如下:
s1=-1/12+j*pi/6;s2=1/12+j*pi/6;s3=1/12;s4=2+j*pi/6;s5=j*pi/6;
n=0:
20;
x1=exp(s1*n);x2=exp(s2*n);x3=exp(s3*n);x4=exp(s4*n);x5=exp(s5*n);
subplot(5,2,1);stem(n,real(x1),'.');xlabel('时间序列n');ylabel('实部');
title('复指数s1=-1/12+j*pi/6时序列实部');gridon
subplot(5,2,2);stem(n,imag(x1),'.');xlabel('时间序列n');ylabel('虚部');
title('复指数s1=-1/12+j*pi/6时序列虚部');gridon
subplot(5,2,3);stem(n,real(x2),'.');xlabel('时间序列n');ylabel('实部');
title('复指数s2=1/12+j*pi/6时序列实部');gridon
subplot(5,2,4);stem(n,imag(x2),'.');xlabel('时间序列n');ylabel('虚部');
title('复指数s2=1/12+j*pi/6时序列虚部');gridon
subplot(5,2,5);stem(n,real(x3),'.');xlabel('时间序列n');ylabel('实部');
title('复指数s3=1/12时序列实部');gridon
subplot(5,2,6);stem(n,imag(x3),'.');xlabel('时间序列n');ylabel('虚部');
title('复指数s3=1/12时序列虚部');gridon
subplot(5,2,7);stem(n,real(x4),'.');xlabel('时间序列n');ylabel('实部');
title('复指数s4=2+j*pi/6时序列实部');gridon
subplot(5,2,8);stem(n,imag(x4),'.');xlabel('时间序列n');ylabel('虚部');
title('复指数s4=2+j*pi/6时序列虚部');gridon
subplot(5,2,9);stem(n,real(x5),'.');xlabel('时间序列n');ylabel('实部');
title('复指数s5=j*pi/6时序列实部');gridon
subplot(5,2,10);stem(n,imag(x5),'.');xlabel('时间序列n');ylabel('虚部');
title('复指数s5=j*pi/6时序列虚部');gridon
由图的实部部分可以看出,s=j*pi/6时,序列周期为12。
计算序列周期为2*pi/(pi/6)=12。
实验和理论相符。
3.绘出信号
的频率是多少?
周期是多少?
产生一个数字频率为0.9的正弦序列,并显示该信号,说明其周期?
程序如下:
n=0:
40;
x1=1.5*sin(2*pi*0.1*n);x2=sin(0.9*n);
subplot(1,2,1);stem(n,x1,'.');xlabel('时间序列n');ylabel('振幅');
title('正弦序列x1=1.5*sin(2*pi*0.1*n)');gridon
subplot(1,2,2);stem(n,x2,'.');xlabel('时间序列n');ylabel('振幅');
title('正弦序列x2=sin(0.9*n)');gridon
运行结果如下:
由上图看出:
的周期是10,而
是非周期的。
理论计算中对第一个,
,第二个0.9不是
的倍数,所以不是周期的。
因此可以看出,实验结果和理论相符。
4.使用帮助功能学习square(方波),sawtooth(锯齿波)和sinc函数,并绘图。
(1)方波绘图程序如下:
%用square
t=-2*pi:
0.001:
2*pi;x=square(t);
plot(t,x);axis([-88-1.21.2]);xlabel('t'),ylabel('x=square(t)');grid
(2)三角波绘图程序如下:
%用Sawtooth
t=-2*pi:
0.001:
2*pi;y=sawtooth(t);
plot(t,y);axis([-88-1.21.2]);
xlabel('t'),ylabel('y=sawtooth(t);');grid
(3)sinc函数绘图程序如下:
t=-pi:
0.001:
pi;x=sinc(t);
plot(t,x);axis([-3.53.5-0.51.2]);
xlabel('t'),ylabel('sinc(t);');grid
四、问题讨论与总结:
1.离散正弦序列的性质:
离散正弦序列就是一个连续的正弦信号被一系列冲激函数采样后的结果,原连续正弦函数一定是周期的,但采样后的离散序列却不一定是周期的。
对于离散序列
来说,只有当
是一个有理数时,也就是说当
是
的有理数倍数时,此离散序列才是周期的。
所以在本实验中
的周期是10,而
是非周期的。
因为0.9不是
的倍数。
2.离散复指数序列性质:
对于离散复指数函数
,只有当s是纯虚数,且纯虚数的系数是
的倍数时,才是周期的。
其它情况下均不是。
这个性质由本次实验中的五个函数的图像可以被证明。
实验二离散系统时域分析
一、实验目的
1.学习MATLAB语言的编程和调试技巧;
2.差分方程的求解;
3.掌握笔算离散卷积方法和MATLAB语言实现。
二、实验内容
时域中,离散时间系统对输入信号或延迟信号进行运算处理,生成具有所需特性的输出信号。
本实验通过MATLAB仿真一些简单的离散时间信号和系统,并研究其时域特性。
涉及到离散时间信号、离散时间系统、系统性质及线性卷积等知识点。
三、实验原理与方法和手段
一个离散时间系统,输入信号为x(n),输出信号为y(n),运算关系用T[﹒]表示,则输入与输出的关系可表示为y(n)=T[x(n)]。
在《信号与系统》和《数字信号处理》课程中,我们知道描述线性移不变离散时间系统的数学模型是常系数差分方程,它与系统的结构流图之间可以互相推导。
迭代解法(也称递推解法)是求解差分方程的最简单也最适用的方法,也是实现数字滤波器的一种基本方法。
差分方程通式为:
x(n)与y(n)分别为系统的激励和响应。
MATLAB以函数filter(b,a,x),来计算在给定输入和差分方程系数时求差分方程的数值解。
b,a分别为系统方程的系数向量。
x是输入序列。
线性时不变系统的输入输出关系可通过单位脉冲响应h(n)表示:
式中*表示卷积运算。
可物理实现的线性时不变系统是稳定的、因果的。
这种系统的单位脉冲响应是因果的(单边)且绝对可和的,即:
h(n)=0,n<0;
。
在MATLAB语言中采用conv实现卷积运算即:
y=conv(x,h),它默认从n=0开始。
四、实验组织运行要求
1.学生在进行实验前必须进行充分的预习,熟悉实验内容;
2.学生根据实验要求,读懂并理解相应的程序;
3.学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理;
4.教师在学生实验过程中予以必要的辅导,独立完成实验;
5.采用集中授课形式。
五、实验条件
1.具有WINDOWS98/2000/NT/XP操作系统的计算机一台;
2.。
MATLAB编程软件。
六、实验步骤
在“开始--程序”菜单中,找到MATLAB程序,运行启动;进入MATLAB后,首先熟悉界面;在CommandWindow中输入参考程序,并执行;记录运行结果图形,并与笔算结果对照。
(MATLAB的使用请参考附录)
具体步骤如下:
1.已知某一系统方程为:
(1)利用MATLAB计算系统的脉冲响应
并画出波形图,其中n=(-2,10);
(2)若
,利用MATLAB计算系统的零状态响应
并画出波形图。
2.设某LSI的单位脉冲响应和
(1)判断此系统是否可实现;
(2)当输入为
时,利用卷积和手工计算此LSI的输出
;
(3)用MATLAB实现第二步,并画出图形(
的n取值范围自定)。
3.
,-2≤n≤5;
,-3≤n≤2,手工计算和MATLAB计算卷积
。
七、思考题
结合《信号与系统》课程所学,思考离散时间系统的线性卷积公式与连续时间系统的卷积公式的异同?
八、实验报告要求
1.报告中要给出实验的MATLAB程序;
2.简述实验目的和原理;
3.给出用笔算时差分方程解、卷积和conv计算线性卷积对照图;
4.给出收获和体会。
九、参考程序
1.程序1
系统微分方程
,计算并画出系统单位冲激响应
n=(-5,10)。
%xh08
n=[-5:
10];b=[1];a=[1-10.9];
x=impseq(-5,10,0);h=filter(b,a,x);stem(n,h,'.');
xlabel('时间序号n');ylabel('h(n)');title('单位冲激响应');gridon
2.程序2
设某LSI的单位脉冲响应
(1)判断此系统是否可实现;
(2)当输入为
时,手工计算此LSI的输出
;
%xh09
nx=0:
9;x=2.^nx;N1=length(x);nh=0:
19;h=0.8.^nh;N2=length(h);
y=conv(x,h);N=N1+N2-1;n=0:
N-1;
subplot(1,3,1);stem(nx,x,'.');xlabel('时间n');title('输入序列x(n)');gridon;
subplot(1,3,2);stem(nh,h,'.');xlabel('时间n');title('单位取样序列h(n)');gridon;
subplot(1,3,3);stem(n,y,'.');xlabel('时间序号n');title('输出序列y(n)');gridon;
3.程序3
如果
、
的起点不为0,则采用conv_m计算卷积;
编写conv_m函数:
function[y,ny]=conv_m(x,nx,h,nh)
%改进卷积程序
nyb=nx
(1)+nh
(1);nye=nx(length(x))+nh(length(h));
ny=[nyb:
nye];y=conv(x,h);
在命令窗口输入:
x=[3,11,7,0,-1,4,2];nx=[-3:
3];h=[2,3,0,-5,2,1];nh=[-1:
4];
[y,ny]=conv_m(x,nx,h,nh)
stem(ny,y,'.');xlabel('时间序号n');title('卷积和y(n)=x(n)*h(n)');gridon;
实验三FFT频谱分析及应用
一、实验目的
1.通过实验加深对FFT的理解;
2.熟悉应用FFT对典型信号进行频谱分析的方法。
二、实验内容
使用MATLAB程序实现信号频域特性的分析。
涉及到离散傅立叶变换(DFT)、快速傅立叶变换(FFT)及信号频率分辨率等知识点。
三、实验原理与方法和手段
在各种信号序列中,有限长序列占重要地位。
对有限长序列可以利用离散傅立叶变换(DFT)进行分析。
DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。
有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的谱分析。
FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。
在MATLAB信号处理工具箱中的函数fft(x,N),可以用来实现序列的N点快速傅立叶变换。
经函数fft求得的序列一般是复序列,通常要求出其幅值和相位。
MATLAB中提供了求复数的幅值和相位的函数:
abs、angle,这些函数一般和fft同时使用。
四、实验组织运行要求
1.学生在进行实验前必须进行充分的预习,熟悉实验内容;
2.学生根据实验要求,读懂并理解相应的程序;
3.学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理;
4.教师在学生实验过程中予以必要的辅导,独立完成实验;
5.采用集中授课形式。
五、实验条件
1.具有WINDOWS98/2000/NT/XP操作系统的计算机一台;
2.。
MATLAB编程软件。
六、实验步骤
在“开始--程序”菜单中,找到MATLAB程序,运行启动;
进入MATLAB后,在CommandWindow中输入实验程序,并执行;
记录运行结果图形,作分析。
具体步骤如下:
1.用FFT进行典型信号的频谱分析高斯序列:
改变参数p、q,分析参数的变化对频谱的影响。
2.模拟信号
,以T=0.01s为间隔即
进行采样,其中n=(0:
N-1),求:
(1)N=40点FFT的幅度频谱,从图中能否观察出信号的2个频谱分量?
(2)提高采样点数,如N=128及1024,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?
信号的2个模拟频率和数字频率各为多少?
FFT频谱分析结果与理论上是否一致?
3.有限长序列
,
,试利用FFT实现由DFT计算线性卷积,并与线性卷积直接计算(conv)的结果进行比较。
七、实验报告要求
1.报告中要给出实验的MATLAB程序;
2.简述实验目的和原理;
3.按实验步骤附上实验信号序列和幅频特性曲线,分析所得到的图形,回答每一步提出的问题。
八、参考程序
1.程序1:
%xh10
%FFT进行高斯序列的频谱分析
n=0:
15;%定义序列的长度是15
p=8;q=2;x=exp(-1*(n-p).^2/q);%利用fft函数实现付氏变换
closeall;subplot(3,2,1);stem(x,'.');gridon;subplot(3,2,2);stem(abs(fft(x)),'.');gridon;
p=8;q=4;x=exp(-1*(n-p).^2/q);%改变信号参数,重新计算
subplot(3,2,3);stem(x,'.');gridon;subplot(3,2,4);stem(abs(fft(x)),'.');gridon;
p=8;q=8;x=exp(-1*(n-p).^2/q);
subplot(3,2,5);stem(x,'.');gridon;subplot(3,2,6);stem(abs(fft(x)),'.');gridon;
2.程序2:
%xh11
N=40;n=0:
N-1;
t=0.01*n;x=2*sin(4*pi*t)+5*cos(8*pi*t);
k=0:
N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:
N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signalx(n)');
subplot(2,1,2);plot(w/pi,magX);title('FFTN=40');
xlabel('w(unit:
pi)');ylabel('|X|');grid
3.程序3:
%xh12-1
%用FFT实现由DFT计算线性卷积
x=[1201];h=[2211];
L=length(x)+length(h)-1;
XE=fft(x,L);HE=fft(h,L);
y1=ifft(XE.*HE)
%画出由圆周卷积计算线性卷积结果及误差
n=0:
L-1;
subplot(311);stem(n,real(y1),'.');axis([0607]);
title('圆周卷积');
xlabel('Timeindexn');ylabel('Amplitude');gridon;
y2=conv(x,h)
subplot(312);stem(n,y2,'.');axis([0607]);
title('线性卷积');
xlabel('Timeindexn');ylabel('Amplitude');gridon;
error=y1-y2;
subplot(313);
stem(n,abs(error),'.');
xlabel('Timeindexn');ylabel('Amplitude');
title('ErrorMagnitude');gridon;
%xh12-2
%用FFT实现由DFT计算线性卷积
x=[1201];h=[2211];
L=5;
XE=fft(x,L);HE=fft(h,L);
y11=ifft(XE.*HE)
%画出5点圆周卷积计算线性卷积结果及误差
n=0:
L-1;
subplot(332);stem(n,real(y11),'.');axis([0408]);
title('5点圆周卷积');
xlabel('Timeindexn');ylabel('Amplitude');gridon;
y2=conv(x,h)
n1=0:
6;
subplot(334);stem(n1,y2,'.');axis([0607]);
title('线性卷积');
xlabel('Timeindexn');ylabel('Amplitude');gridon;
y11=[y1100]
error=y11-y2;
n=0:
6;
subplot(333);
stem(n,abs(error),'.');
xlabel('Timeindexn');ylabel('Amplitude');
title('ErrorMagnitude');gridon;
L=length(x)+length(h)-1;
XE=fft(x,L);HE=fft(h,L);
y12=ifft(XE.*HE)
%画出7点圆周卷积计算线性卷积结果及误差
n=0:
L-1;
subplot(335);stem(n,real(y12),'.');axis([0608]);
title('7点圆周卷积');
xlabel('Timeindexn');ylabel('Amplitude');gridon;
error=y12-y2;
n=0:
6;
subplot(336);
stem(n,abs(error),'.');
xlabel('Timeindexn');ylabel('Amplitude');
title('ErrorMagnitude');gridon;
L=10;
XE=fft(x,L);HE=fft(h,L);
y13=ifft(XE.*HE)
%画出10点圆周卷积计算线性卷积结果及误差
n=0:
L-1;
subplot(338);stem(n,real(y13),'.');axis([0908]);
title('10点圆周卷积');
xlabel('Timeindexn');ylabel('Amplitude');gridon;
y2=[y2000]
error=y13-y2;
n=0:
9;
subplot(339);
stem(n,abs(error),'.');
xlabel('Timeindexn');ylabel('Amplitude');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 讲义 92
![提示](https://static.bdocx.com/images/bang_tan.gif)