哈尔滨工程大学数字信号处理实验一讲述Word文件下载.doc
《哈尔滨工程大学数字信号处理实验一讲述Word文件下载.doc》由会员分享,可在线阅读,更多相关《哈尔滨工程大学数字信号处理实验一讲述Word文件下载.doc(20页珍藏版)》请在冰点文库上搜索。
(1)实验程序清单:
L=20;
%序列的长度
nn=1:
(L);
%n取值的范围
imp=zeros(L,1);
%生成一个L行、1列的矩阵
imp(5)=0.9;
%表示第5个数,即n=5处的冲激高度为0.9
stem(nn,imp);
%以n的取值为横轴。
以imp为纵轴
实验仿真图:
(2)实验程序清单:
L=31;
%序列的长度
nn=-15:
(L-16);
%n取值的范围
%生成一个L行、1列的矩阵
imp(16)=0.8;
%表示第16个数,即n=0处的冲激高度为0.8
%以n的取值为横轴。
(3)实验程序清单:
L=51;
nn=300:
(300+L-1);
%n取值的范围
imp(34)=1.5;
%表示第34个数,即n=333处的冲激高度为1.5
(4)实验程序清单:
L=11;
%序列的长度
nn=-10:
(L-11);
%生成一个L行、1列的矩阵
imp(4)=4.5;
%表示第4个数,即n=-7处的冲激高度为4.5
%以n的取值为横轴。
冲激信号实验结果分析:
根据以上编写的实验程序得到的仿真结果可知:
理论计算分析和实验结果图一致。
2、正弦信号
要求:
使用matlab的向量功能求解次问题,将向量参数赋予余弦(或正弦)函数,再利用一个函数调用。
在每种情况下,应只在指定的区间上展开并相应标注水平N轴,使用stem指令现实每个序列。
产生并且绘出下面的序列,不化简X3[n],并说明X4[n]不是周期序列的原因。
x1[n]=sin(πn/17)0≤n≤25
x2[n]=sin(πn/17)-15≤n≤25
x3[n]=sin(3πn+π/2)-10≤n≤10
x4[n]=cos(πn/√23)0≤n≤50
编写的正弦函数程序为:
functiony=myselfs(A,B,Q,X,Y)%定义一个正弦函数及其变量
N=X:
Y%N的取值范围
Z=B*N+Q%正弦函数变量的表达式
y=A*sin(Z)%正弦函数的表达式
stem(N,y)%以N为横坐标,y=A*sin(Z)的值为纵坐标
end
编写的余弦函数程序为:
functiony=myselfc(A,B,Q,X,Y)%定义一个余弦函数及其变量
Z=B*N+Q%余弦函数变量的表达式
y=A*cos(Z)%余弦函数的表达式
stem(N,y)%以N为横坐标,y=A*cos(Z)的值为纵坐标
正弦函数和余弦函数的程序编好以后,在随后的使用当中只需写出调用程序语句,赋予相应的变量值即可。
y=myselfs(1,pi/17,0,0,25)%给要调用的正弦函数的相应变量赋值
(2)实验程序清单:
y=myselfs(1,pi/17,0,-15,25)%给要调用的正弦函数的相应变量赋值
(3)实验程序清单:
y=myselfs(1,3*pi,pi/2,-10,10)%给要调用的正弦函数的相应变量赋值
(4)实验程序清单:
y=myselfc(1,(pi)/sqrt(23),0,0,50)%给要调用的余弦函数的相应变量赋值
正弦信号实验结果分析
由第四个仿真图可以看出其不是周期序列,从理论上分析,(2π)/(π/√23)=2√23,是一个无理数,所以它为非周期序列。
其它的图与理论计算绘制的图均保持一致。
3、指数信号
实验内容如下:
1、研究下面的MATLAB函数,看它如何产生离散时间指数信号,然后使用函数在区间n=0,1,2,…,20上绘制出指数信号x[n]=(0.9)^n.
首先创建M文件,并在MATLAB中设置好路径,M文件内容如下:
(注意:
必须设置成function文件)
functiony=genexp(b,n0,L) %指数信号函数
if(L<
=0)
error('
GENEXP:
Lengthnopositive'
)
nn=n0+[1:
L]'
-1;
%[1:
为一行L列从1到L的向量的转置,即L行一列的向量
y=b.^nn;
%指数y的表达式
stem(nn,y)%以n为横坐标,y值为纵坐标绘图
end %b为底数,n0为区间起始值,L为区间长度
指数函数的程序如上,编写好以后,在之后的使用中只需调用并给相应变量赋值即可。
实验程序清单:
x=genexp(0.9,0,21)'
;
%调用指数函数,并给变量赋值
2、在许多推导中,指数信号序列x[n]=a^n*u[n]需在有限区间上求和,这个和用下面的闭合式表示:
∑a^n=(1-a^L)/(1-a),a≠1(0≤n≤L-1,)(3.1)使用a部分中的函数产生一个指数信号然后对其求和;
将结果与(3.1)式比较。
L=21;
a=0.9;
S=(1-a^L)/(1-a)%以上为利用指数的求和公式算出序列和
S=
8.9058%此法下序列和的值
b=0.9;
Q=0;
forn=0:
20
y=b^n;
Q=Q+y;
end%以上为编写程序各项累加求和
Q
Q=
8.9058%此法下序列和的值
3、证明一有限长指数信号满足位移关系:
y[n]=ay[n-1],1≤n≤L-1(3.4);
比较向量y(2:
L)和a*y(1:
(L-1)).
y1=[genexp(0.9,2,20)]'
%调用指数函数,并给变量赋值
4、当输入x[n]是一个冲激信号时,信号y[n]=a^n*u[n]是下面差分方程的解:
y[n]-ay[n-1]=x[n],初始条件为y[-1]=0,用MATLAB中的filter函数实现差分方程,使用filter函数产生一个与(a)部分中相同的信号(即a=0.9)。
filter函数的用法如下:
yout=filter(b,a,xin),可用helpfilter了解函数详情。
a=[1,-0.9];
b=1;
xin=zeros(1,21);
xin
(1)=1;
yout=filter(1,a,xin);
%调用filter函数
n=0:
20;
%n的取值范围
stem(n,yout);
%以n的值为横坐标,yout的结果为纵坐标
复指数信号实验结果分析:
(1)在实验2中,∑a^n=(1-a^L)/(1-a),a≠1(0≤n≤L-1)通过计算得到结果为:
8.90581010868487640791,可以看出两者的误差极其小,为:
1.1e-4%
(2)在实验3中,由实验仿真图可以看出:
在移位有限长度时,向量y(2:
(L-1))的图形是基本一致的,因此我们可以得出结论:
时移不改变信号的特征。
(3)在实验4中,将实验仿真图与1的仿真图形进行比较,由差分方程给出的递归表示式,即用MATLAB中的filter函数实现差分方程,得到差分方程的解是完全一致的。
4、复值信号
nn=0:
25;
%n取值的范围
xx=exp(j*nn/3)%复指数
subplot(211)%把绘图窗口分成两行一列两个子图,然后在第一块区域作图
stem(nn,real(xx))%在n的指定点处画出复指数实部
title('
REALPART'
),xlabel('
INDEX(n)'
)%图的标题为REALPART,X轴为INDEX(n)
subplot(212)%把绘图窗口分成两行一列两个子图,然后在第二块区域作图
stem(nn,imag(xx))%在n的指定点处画出复指数虚部
IMAGPART'
) %图的标题为IMAGPART,X轴为INDEX(n)
复值信号实验结果分析:
使用了subplot这一函数,将复指数的实部和虚部图绘制在同一张图上,如上图所示。
5、复指数信号
a、实验程序清单:
%n取值的范围
X=0.9.^n.*(cos(pi/4.*n)+j.*sin(pi/4.*n));
%复指数
subplot(211);
%把绘图窗口分成两行一列两个子图,然后在第一块区域作图
plot(n,real(X));
%在n的指定点处画出复指数实部,plot一般用于连续函数
xlabel('
n'
),ylabel('
REALX'
);
%以n值为X轴坐标,复指数的实部为Y轴
subplot(212);
%把绘图窗口分成两行一列两个子图,然后在第二块区域作图
plot(n,imag(X));
%在n的指定点处画出复指数虚部
IMAGEX'
%以n值为X轴坐标,复指数的虚部为Y轴
b、实验程序清单1:
%n取值的范围
%复指数
plot(real(X),imag(X));
%在复指数X相应实部处画出对应复指数的虚部
%以复指数的实部为X轴,复指数的虚部为Y轴
实验程序清单2:
80;
%n的取值范围
X=0.9.^n.*(cos(pi/8.*n)+j.*sin(pi/8.*n));
%复指数
%在复指数X相应实部处画出对应复指数的虚部
c、实验程序清单1:
n=-15:
%n的取值范围
X=(exp(j.*pi/17.*n)-exp(-j.*pi/17.*n))/2./j;
%把绘图窗口分成两行一列两个子图,然后在第一块区域作图
stem(n,real(X));
%在n的指定点处画出复指数实部,stem一般用于离散函数
%以n的取值作为横坐标
ylabel('
%以复指数的实部作为纵坐标
%把绘图窗口分成两行一列两个子图,然后在第二块区域作图
stem(n,imag(X));
%在n的指定点处画出复指数虚部
%以n的取值作为横坐标
IMAGEPART'
%以复指数的虚部作为纵坐标
其中G=1,Ø
=0,r=1,Ɵ=pi/17;
50;
%n的取值范围
X=1.1.^n.*cos(pi/11.*n+pi/4);
%复指数
%把绘图窗口分成两行一列两个子图,然后在第一块区域作图
%在n的指定点处画出复指数实部,stem一般用于离散函数
%把绘图窗口分成两行一列两个子图,然后在第二块区域作图
%以n的取值作为横坐标
=pi/4,r=1.1,Ɵ=pi/11;
实验程序清单3:
n=-10:
X=0.9.^n.*cos(pi/11.*n);
%复指数
%把绘图窗口分成两行一列两个子图,然后在第一块区域作图
%在n的指定点处画出复指数实部,stem一般用于离散函数
%以n的取值作为横坐标
%以复指数的实部作为纵坐标
%把绘图窗口分成两行一列两个子图,然后在第二块区域作图
%在n的指定点处画出复指数虚部
=0,r=0.9,Ɵ=pi/11;
d、实验程序清单1:
z0=exp(j*pi/17);
a=[1,-z0];
xin=zeros(41,1);
%n取值的范围
%把绘图窗口分成两行一列两个子图,然后在第一块区域作图
stem(nn,real(yout));
%以n的取值作为横坐标
%以复指数的实部作为纵坐标
stem(nn,imag(yout));
%以复指数的虚部作为纵坐标
z0=1.1*exp(j*pi/11);
xin=zeros(51,1);
xin
(1)=exp(j*pi/4);
%n取值的范围
%以n的取值作为横坐标
%以复指数的虚部作为纵坐标
z0=0.9*exp(j*pi/11);
xin=zeros(31,1);
%n取值的范围
%以复指数的虚部作为纵坐标
f、实验程序清单1:
z0=1/2*cos(pi/4);
xin=zeros(21,1);
xin
(1)=5;
stem(nn,yout);
z0=1/2*exp(j*pi/4);
%n取值的范围
:
z0=1/2*cos(0);
z0=1/2*exp(j*0);
三、实验体会
这次实验中,我根据要求绘制了一些基本信号,进一步了解了这些基本信号(冲激信号、正弦信号、指数信号、复制信号以及复指数信号)的特点,以及它们的绘制方法方法,并学会了如何使用绘图指令、以及如何在一个页面中绘两幅以上的图等等。
大一时在线性代数的上机课中接触过MATLAB,知道MATLAB是一款功能很强大的软件,可应用于图像处理等等领域。
现在数字信号处理的实验课上给了我们学习MATLAB的机会,我更当好好珍惜才是。
但是,正是由于MATLAB功能强大,要想熟练使用MATLAB有一定的难度,这就更要求我们要在课下多花时间钻研。
总之这次实验培养了我对MATLAB软件的兴趣,路漫漫其修远兮,吾将上下而求索,希望通过这几次的实验,提高我操作软件的熟练程度。