数字信号处理实验报告 (实验1-4)
- 格式:doc
- 大小:913.50 KB
- 文档页数:24
实验一 MATLAB仿真软件的基本操作命令和使用方法
实验内容
1、帮助命令
使用 help 命令,查找 sqrt(开方)函数的使用方法;
2、MATLAB命令窗口
(1)在MATLAB命令窗口直接输入命令行计算31)5.0sin(21y的值;
(2)求多项式 p(x) = x3 + 2x+ 4的根;
3、矩阵运算
(1)矩阵的乘法
已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B
(2)矩阵的行列式
已知 A=[1 2 3;4 5 6;7 8 9], 求A
(3)矩阵的转置及共轭转置
已知A=[1 2 3;4 5 6;7 8 9],求A'
已知 B=[5+i,2-i,1;6*i,4,9-i], 求 B.' , B'
(4)特征值、特征向量、特征多项式
已知 A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵 A的特征值、特征向量、特征多项式;
(5)使用冒号选出指定元素
已知: A=[1 2 3;4 5 6;7 8 9];求 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.复杂信号的产生:复杂的信号可以通过在简单信号上执行基本的运算来产生
试产生一个振幅调制信号 ,并显示出来。
)1.02cos())01.02cos(4.01()2cos())2cos(1()(nnnfnfmnyHL
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程序仿真该系统,输入三个不同的输入序列:
)1.02cos()(1nnx,)4.02cos()(2nnx,)(3)(221nxnxx
计算并并显示相应的输出)(1ny, )(2ny和)(ny。
>> 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.2403 2.4908 2.2403];
den=[1 -0.4 0.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.2403 2.4908 2.2403];
den=[1 -0.4 0.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=[0 0]; %设置零初始条件
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程序仿真计算下列两个有限长序列的卷积和并显示图形。
)2(2)1(3)()(1nnnnx
)3()()(2nununx
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);