数字信号处理实验报告 实验14.docx
《数字信号处理实验报告 实验14.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告 实验14.docx(27页珍藏版)》请在冰豆网上搜索。
数字信号处理实验报告实验14
实验一MATLAB仿真软件的基本操作命令和使用方法
实验内容
1、帮助命令
使用help命令,查找sqrt(开方)函数的使用方法;
2、MATLAB命令窗口
(1)在MATLAB命令窗口直接输入命令行计算
的值;
(2)求多项式p(x)=x3+2x+4的根;
3、矩阵运算
(1)矩阵的乘法
已知A=[12;34],B=[55;78],求A^2*B
(2)矩阵的行列式
已知A=[123;456;789],求
(3)矩阵的转置及共轭转置
已知A=[123;456;789],求A'
已知B=[5+i,2-i,1;6*i,4,9-i],求B.',B'
(4)特征值、特征向量、特征多项式
已知A=[1.2350.9;51.756;3901;1234],求矩阵A的特征值、特征向量、特征多项式;
(5)使用冒号选出指定元素
已知:
A=[123;456;789];求A中第3列前2个元素;A中所有列第2,3行的元素;
4、Matlab基本编程方法
(1)编写命令文件:
计算1+2+…+n<2000时的最大n值;
(2)编写函数文件:
分别用for和while循环结构编写程序,求2的0到15次幂的和。
5、MATLAB基本绘图命令
(1)绘制余弦曲线y=cos(t),t∈[0,2π]
(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t∈[0,2π]
(3)绘制[0,4π]区间上的x1=10sint曲线,并要求:
(a)线形为点划线、颜色为红色、数据点标记为加号;
(b)坐标轴控制:
显示范围、刻度线、比例、网络线
(c)标注控制:
坐标轴名称、标题、相应文本;
>>clear;
t=0:
pi/10:
4*pi;
y=10*sin(t);
plot(t,y);
plot(t,y,'-+r');
grid
>>xlabel('X'),ylabel('Y');
>>title('Plot:
y=10*sin(t)');
>>text(14,10,'完整图形');
实验二常见离散信号的MATLAB产生和图形显示
实验内容与步骤
1.写出延迟了np个单位的单位脉冲函数impseq,单位阶跃函数stepseq,n=ns:
nf
function[x,n]=impseq[np,ns,nf];
function[x,n]=stepseq[np,ns,nf];
2.产生一个单位样本序列x1(n),起点为ns=-10,终点为nf=20,在n0=0时有一单位脉冲并显示它。
修改程序,以产生带有延时11个样本的延迟单位样本序列x2(n)=x1(n-11),并显示它。
>>clear;
>>ns=-10;nf=20;n0=0;
>>[x1,n1]=impseq(n0,ns,nf);
>>subplot(1,2,1),stem(n1,x1);title('n0=0时的单位脉冲')
>>np=11;
>>[x2,n2]=impseq(np,ns,nf);
>>subplot(1,2,2),stem(n2,x2);title('延迟11个样本后')
3.产生一个序列X(n)=n(u(n)-u(n-8)),0<=n<=20,并显示。
>>clear
>>n=[0:
20];
>>x=n.*(stepseq(0,0,20)-stepseq(8,0,20));
>>stem(n,x);
4.编写序列相加,相乘,以及序列翻转、移位的函数文件
function[y,ny]=seqadd(x1,n1,x2,n2);
function[y,ny]=seqmult(x1,n1,x2,n2);
function[y,ny]=seqfold(x,nx);
function[y,ny]=seqshift(x,nx,k);
5.已知序列x=[0,1,2,3,4,3,2,1,0],n=-5:
3,产生一个序列y(n)=2*x(n+3)+x(-n);并显示它。
>>x=[0,1,2,3,4,3,2,1,0];
>>n=[-5:
3];
>>y=2*seqshift(x,n,3)+seqfold(x,n);stem(x,y)
>>stem(n,y)
6.复杂信号的产生:
复杂的信号可以通过在简单信号上执行基本的运算来产生
试产生一个振幅调制信号,并显示出来。
n=0:
100
>>n=[0:
100];
>>y=(1+0.4*cos(2*pi*0.01*n)).*cos(2*pi*0.1*n);
>>stem(n,y)
实验三离散时间系统的时域分析
实验内容与步骤
1.假定一因果系统为
y(n)-0.4y(n-1)+0.75y(n-2)=2.2403x(n)+2.4908x(n-1)+2.2403x(n-2)
用MATLAB程序仿真该系统,输入三个不同的输入序列:
,
,
计算并并显示相应的输出
,
和
。
>>n=0:
40;
a=2;
b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.4*n);
x=a*x1+b*x2;
num=[2.24032.49082.2403];
den=[1-0.40.75];
y1=filter(num,den,x1);%计算出y1(n)
y2=filter(num,den,x2);%计算出y2(n)
y=filter(num,den,x);%计算出y(n)
stem(y1);
n=0:
40;
a=2;
b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.4*n);
x=a*x1+b*x2;
num=[2.24032.49082.2403];
den=[1-0.40.75];
y1=filter(num,den,x1);%计算出y1(n)
y2=filter(num,den,x2);%计算出y2(n)
y=filter(num,den,x);%计算出y(n)
stem(y1);
>>stem(y2);
>>stem(y);
2.用MATLAB程序仿真步骤1给出的系统,对两个不同的输入序列x(n)和x(n-10),计算并显示相应的输出序列y3(n)和y4(n)。
n=0:
40;
x1=2*n;
num=[2.2403,2.4908,2.2403];
den=[1,-0.4,0.75];
ic=[00];%设置零初始条件
y3=filter(num,den,x1,ic);%计算输入为x1(n)时的输出y1(n)
[y,ny]=seqshift(x1,n,10)
y4=filter(num,den,y,ic);
subplot(2,1,1)
stem(n,y3);
ylabel('振幅');
title('y3(n)');
subplot(2,1,2)
stem(ny,y4);
ylabel('振幅');
title('y4(n)');
3.用MATLAB程序仿真计算下列两个有限长序列的卷积和并显示图形。
function[y,ny]=convwthn(x,nx,h,nh)
nys=nx
(1)+nh
(1);nyf=nx(end)+nh(end);
y=conv(x,h);ny=[nys:
nyf];
n=0:
20;
x1=impseq(0,0,20)+3*impseq(1,0,20)+2*impseq(2,0,20)
x2=stepseq(0,0,20)-stepseq(3,0,20)
subplot(3,1,1)
stem(n,x1);
subplot(3,1,2)
stem(n,x2);
[y,ny]=convwthn(x1,n,x2,n);
subplot(3,1,3)
stem(ny,y);
实验四离散时间信号的DTFT
一、实验目的
1.运用MATLAB计算离散时间系统的频率响应。
2.运用MATLAB验证离散时间傅立叶变换的性质。
二、实验原理
(一)、计算离散时间系统的DTFT
已知一个离散时间系统
,可以用MATLAB函数frequz非常方便地在给定的L个离散频率点
处进行计算。
由于
是ω的连续函数,需要尽可能大地选取L的值(因为严格说,在MATLAB中不使用symbolic工具箱是不能分析模拟信号的,但是当采样时间间隔充分小的时候,可产生平滑的图形),以使得命令plot产生的图形和真实离散时间傅立叶变换的图形尽可能一致。
在MATLAB中,freqz计算出序列{
}和{
}的L点离散傅立叶变换,然后对其离散傅立叶变换值相除得到
。
为了更加方便快速地运算,应将L的值选为2的幂,如256或者512。
例3.1运用MATLAB画出以下系统的频率响应。
y(n)-0.6y(n-1)=2x(n)+x(n-1)
程序:
clf;
w=-4*pi:
8*pi/511:
4*pi;
num=[21];den=[1-0.6];
h=freqz(num,den,w);
subplot(2,1,1)
plot(w/pi,real(h));grid
title(‘H(e^{j\omega}的实部’))
xlabel(‘\omega/\pi’);
ylabel(‘振幅’);
subplot(2,1,1)
plot(w/pi,imag(h));grid
title(‘H(e^{j\omega}的虚部’))
xlabel(‘\omega/\pi’);
ylabel(‘振幅’);
(二)、离散时间傅立叶变换DTFT的性质。
1.时移与频移
设
那么
(2.2.6)
(2.2.7)
2.时域卷积定理
如果
那么
三、实验内容与步骤
1.已知因果线性时不变离散时间系统
y(n)-0.4y(n-1)+0.75y(n-2)=2.2403x(n)+2.4908x(n-1)+2.2403x(n-2)
运用MATLAB画出该系统的频率响应。
clf;
w=-4*pi:
8*pi/511:
4*pi;
num=[2.24032.49082.2403];den=[1-0.40.75];
h=freqz(num,den,w);
subplot(2,1,1)
plot(w/pi,real(h));
grid
title('H(e^{j\omega}的实部)');
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,1,2)
plot(w/pi,imag(h));
grid
title('H(e^{j\omega}的虚部)');
xlabel('\omega/\pi');
ylabel('振幅');
运行结果:
2.运行下面程序并显示它,验证离散时间傅立叶变换DTFT的时移性。
clf;
w=-pi:
2*pi/255:
pi;wo=0.4*pi;D=10;
num=[123456789];
h1=freqz(num,1,w);
h2=freqz([zeros(1,D)num],1,w);
subplot(2,2,1)
plot(w/pi,abs(h1));grid
title(‘原序列的幅度谱’)
subplot(2,2,2)
plot(w/pi,abs(h2));grid
title(‘时移后序列的幅度谱’)
subplot(2,2,3)
plot(w/pi,angle(h1));grid
title(‘原序列的相位谱’)
subplot(2,2,4)
plot(w/pi,angle(h2));grid
title(‘时移后序列的相位谱’)
运行结果:
3.运行下面程序并显示它,验证离散时间傅立叶变换DTFT的频移性。
clf;
w=-pi:
2*pi/255:
pi;wo=0.4*pi;D=10;
num1=[1357911131517];L=length(num1);
h1=freqz(num1,1,w);n=0:
L-1;
num2=exp(wo*i*n).*num1;
h2=freqz(num2,1,w);
subplot(2,2,1)
plot(w/pi,abs(h1));grid
title(‘原序列的幅度谱’)
subplot(2,2,2)
plot(w/pi,abs(h2));grid
title(‘频移后序列的幅度谱’)
subplot(2,2,3)
plot(w/pi,angle(h1));grid
title(‘原序列的相位谱’)
subplot(2,2,4)
plot(w/pi,angle(h2));grid
title(‘频移后序列的相位谱’)
运行结果:
4.运行下面程序并显示它,验证离散时间傅立叶变换时域卷积性质。
clf;
w=-pi:
2*pi/255:
pi;
x1=[1357911131517];
x2=[1-23-21];
y=conv(x1,x2);
h1=freqz(x1,1,w);
h2=freqz(x2,1,w);
hp=hi.*h2;
h3=freqz(y,1,w);
subplot(2,2,1)
plot(w/pi,abs(hp));grid
title(‘幅度谱的乘积’)
subplot(2,2,2)
plot(w/pi,abs(h3));grid
title(‘卷积后序列的幅度谱’)
subplot(2,2,3)
plot(w/pi,angle(hp));grid
title(‘相位谱的和’)
subplot(2,2,4)
plot(w/pi,angle(h3));grid
title(‘卷积后序列的相位谱’)
运行结果:
四、实验仪器设备
计算机,MATLAB软件
五、实验注意事项
课前预先阅读并理解实验程序;
六、思考题
1.讨论实验程序1中的离散时间系统的频率响应是离散的还是连续的,是否是周期的?
周期为多少?
答:
是连续的,同时也是周期的。
周期为2pi。
2.讨论实验程序2中h1和h2的关系是什么?
哪个参数控制时移量?
答:
h2的幅度与h1相同,相位变化频率是h1的2倍。
说明时移对幅度无影响,影响相频。
程序2中参数D控制时移量。
3.讨论实验程序3中h1和h2的关系是什么?
哪个参数控制频移量?
答:
h2的相位变化与h1相同,幅度不同,h2幅度出现延迟,延迟月一个样本。
说明频移对相位无影响,影响幅度。
4.讨论实验程序4中y与x1和x2的关系是什么?
h1和h2与x1和x2的关系是什么?
h1和hp相等吗?
答:
Y是x1与x2的卷积。
h1和h2分别是x1和x2的频率响应。
h1和hp相等.
+