数字信号处理实验报告 (基于MATLAB)

更新时间:2024-06-17 00:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程名称:数字信号处理实验

学号:实验地点:综合楼C407

专业班级:2014级生物医学工程

姓名:leifeng

指导老师:

第一次实验

第一章离散时间信号的时域分析

Q1.1运行程序P1.1,以产生单位样本序列u[n]并显示它

clf; n=-10:20;

u=[zeros(1,10) 1 zeros(1,20)]; stem(n,u);

xlabel('时间序号');ylabel('振幅'); title('单位样本序列'); axis([-10 20 0 1.2]);

单位样本序列10.8振幅0.60.40.20-10-505时间序号101520

Q1.2 命令clf,axis,title,xlabel和ylabel的作用是什么

clf:清除图形窗口内容; axis:规定横纵坐标的范围;

title:使图像面板上方显示相应的题目名称; xlable:定义横坐标的名字; ylable:定义纵坐标的名字。

Q1.3修改程序P1.1以产生带有延时11个样本的延迟单位样本序列ud[n],运行修改的程序并

且显示产生的序列。

clf; n=0:30;

u=[zeros(1,11) 1 zeros(1,19)]; stem(n,u);

xlabel('时间序号');ylabel('振幅'); title('单位样本序列'); axis([0 30 0 1.2]);

单位样本序列10.8振幅0.60.40.20051015时间序号202530

Q1.5 修改程序P1.1,以产生带有超前7个样本的延时单位阶跃序列sd[n]。运行修改后的程序

并显示产生的序列。

clf; n=-10:20;

sd=[zeros(1,3) 1 ones(1,27) ]; stem(n,sd);

xlabel('时间序号');ylabel('振幅'); title('单位样本序列'); axis([-10 20 0 1.2]);

单位样本序列10.8振幅0.60.40.20-10-505时间序号101520

Q1.6运行程序P1.2,以产生复数值的指数序列。

clf;

c=-(1/12)+(pi/6)*i; K=2; n=0:40; x=K*exp(c*n); subplot(2,1,1); stem(n,real(x));

xlabel('时间序号n');ylabel('振幅'); title('实部'); subplot(2,1,2); stem(n,imag(x));

xlabel('时间序号n');ylabel('振幅'); title('虚部');

实部21振幅0-1-20510152025时间序号n虚部30354021振幅0-10510152025时间序号n303540

Q1.7哪个参数控制该序列的增长或衰减率?哪个参数控制该序列的振幅?

参数C控制序列增长或衰减率 参数K控制序列的振幅

参数C控制该序列的增长或衰减率; 参数K控制该序列的振幅。

Q1.8若参数C更改为(1/12)+(pi/6)*i,将会发生什么情况?

实部50振幅0-500510152025时间序号n虚部30354010050振幅0-500510152025时间序号n303540

Q1.9运算符real和imag的作用是什么?

运算符real和imag的作用分别是提取运算数值x实部和虚部。

Q1.10命令subplot的作用是什么?

subplot(a,b,c),其中a代表图像分a行显示,b代表图像分b列显示,c代表第a行的第b列图像。

Q1.11运行程序P1.3以产生实数值的指数序列

clf;

n=0:35;a=1.2;K=0.2; x=K*a.^n; stem(n,x);

xlabel('时间序号n');ylabel('振幅');

12010080振幅604020005101520时间序号n253035

Q1.12哪个参数控制该序列的增长或衰减率?哪个参数控制该序列的振幅?

参数a控制该序列的增长或者衰减率, 参数k控制该序列的振幅。

Q1.13算术运算符^和.^之间的区别是什么?

运算符“^”表示a的指数是n这个序列;运算符”.^”表示a的指数分别是n这个序列中的每一个数字,即对应的每一个元素。

Q1.14

clf;

若参数a小于1,会发生什么情况?将参数a更改为0.9,将参数k更改成20,再次运

行程序P1.3。

n=0:35;a=0.9;K=20; x=K*a.^n; stem(n,x);

xlabel('时间序号n');ylabel('振幅');

Q1.16

2018161412振幅108642005101520时间序号n253035

Q1.15该序列的长度是多少?怎样才能改变它?

该序列的长度是35;通过改变“n=0:35”中的“35”这个数字可以改变序列的长度。

Q1.16

clf;

使用MATLAB命令sum(s.*s)可计算用向量s表示的实数序列s[n]的能量。试求在习题

Q1.11和习题Q1.14中产生的实数值指数序列x[n]的能量。

n=0:35;a=0.9;K=20; x=K*a.^n; stem(n,x); sum(s.*s)

xlabel('时间序号n');ylabel('振幅');

结果:

ans =2.3106e+004

clf;

n=0:35;a=1.2;K=0.2; x=K*a.^n; s=stem(n,x); sum(s.*s)

xlabel('时间序号n');ylabel('振幅');

结果:

ans =2.3719e+004

Q1.17运行程序P1.4,以产生正弦序列并显示它。

n=0:40; f=0.1; phase=0; A=1.5;

arg=2*pi*f*n-phase; x=A*cos(arg); clf; stem(n,x);

axis([0 40 -2 2]); grid;

title('正弦序列'); xlabel('时间序号n'); ylabel('振幅'); axis;

Q1.18

该序列的频率是多少?怎样可以改变它?哪个参数控制该序列的相位?哪个参数控

制该序列的振幅?该序列的周期是多少?

该序列的频率是0.1Hz;通过改变f的值可以此正弦序列的频率;参数phase控制该序列的初相位;参数A控制该序列的振幅;该序列的周期是10s。

Q1.19该序列的长度是多少?怎样可以改变它?

该序列的长度是41个时间单位,通过改变n的参数可以改变该序列的长度。

Q1.21axis的作用axis和grid命令的作用是什么

是规定像显图示的横纵坐标的范围;grid的作用是显示图像上面的“网格”。

Q1.22

修改程序P1.4,以产生一个频率为0.9的正弦序列并显示它。把此序列和习题Q1.17

中产生的序列相比较。修改程序P1.4,以产生一个频率为1.1的正弦序列并显示它。把此序列与Q1.17中产生的序列相比较,评价你的结果。

正弦序列21.510.5振幅0-0.5-1-1.5-20510152025时间序号n303540

正弦序列21.510.5振幅0-0.5-1-1.5-2051015

2025时间序号n303540

该图像与f=0.1时的图像一样,因为该正弦序列的最小周期是2pi的,而当f=0.9与f=1.1时正好是f=0.1的整数倍。

Q1.23

修改上述程序,以产生长度为50,频率为0.08,振幅为2.5,相移为90度的一个正弦

序列并显示它。该序列的周期是多少?

n=0:50; f=0.08; phase=pi/2; A=2.5;

arg=2*pi*f*n-phase; x=A*cos(arg); clf; stem(n,x);

axis([0 40 -3 3]); grid;

title('正弦序列'); xlabel('时间序号n'); ylabel('振幅'); axis;

正弦序列321振幅0-1-2-30510152025时间序号n303540

周期为12.5s

Q1.24

在程序P1.4中用plot命令代替stem命令,运行新程序。新图形与Q1.7中产生的图形

有什么区别?

正弦序列21.510.5振幅0-0.5-1-1.5-2051015

原图像是离散的,新图像是连续的,说明plot命令是用平滑的线将各点连接起来产生连续波,而stem命令则是用各点来产生离散波。

2025时间序号n303540Q1.25在程序P1.4中用stairs命令代替stem命令,运行新程序。新图形与Q1.17和Q1.24

中产生的图形有什么区别?

正弦序列21.510.5振幅0-0.5-1-1.5-20510152025时间序号n303540

stairs函数是用直线将相应的点连接起来,类似于阶梯状。

Q1.26编写一个MATLAB程序,以产生并显示一个长度为100的随机信号,该信号在区间[-2,2]

中均匀分布。

clf;

x=4*rand(1,100)-2; stem(x);

21.510.50-0.5-1-1.5-20102030405060708090100

Q1.27

编写一个MATLAB程序,以产生并显示一个长度为75的高斯随机信号,该信号正太分

布且均值为0,方差为3

clf;

x=3*randn(1,75); stem(x);

86420-2-4-6-801020304050607080

Q1.36运行程序P1.7以产生扫频正弦序列x[n]

n=0:100; a=pi/2/100; b=0;

arg=a*n.*n+b*n; x=cos(arg); clf;

stem(n,x);

axis([0,100,-1.5,1.5]); title('扫频正弦信号'); xlabel('时间序号n'); ylabel('振幅'); grid;axis;

扫频正弦信号1.510.5振幅0-0.5-1-1.50102030405060时间序号n708090100

第二次实验

第二章 离散时间系统的时域分析

Q2.1对M =2,生成输入x[n]= s1[n]+s2[n]的输出信号,输入x[n]的那个分量被改离散时间系统

抑制?

信号#12121信号#2振幅0-1-2050时间序号n输入信号100振幅0-1-2050时间序号n输出信号1002121振幅0-1-2050时间序号n100振幅0-1-2050时间序号n100

答: x[n]被该离散时间系统抑制的分量为信号#2 的高频分量

Q2.2.线性时不变系统变为y[n] = 0.5(x[n]–x[n–1])后,对输入x[n] = s1[n]+s2[n]的影响是什么?

信号#12121信号#2振幅0-1-2振幅050时间序号n输入信号1000-1-2050时间序号n输出信号1002121振幅0-1-2050时间序号n100振幅0-1-2050时间序号n100

答:对于输入的影响是-该系统现在是一个高通滤波器。它通过高频率的输入分量信号#2,而不是 低频分量信号#1.

Q2.3 s1[n]和s2[n]频率取其他值结果。

M=4 f1=0.1 f2=0.9

信号#12121信号#2振幅0-1-2050时间序号n输入信号100振幅0-1-2050时间序号n输出信号1002121振幅0-1-2050时间序号n100振幅0-1-2050时间序号n100

M=10 f1=0.1 f2=0.9

信号#12121信号#2振幅0-1-2050时间序号n输入信号100振幅0-1-2050时间序号n输出信号1002121振幅0-1-2050时间序号n100振幅0-1-2050时间序号n100

Q2.4修改程序P2.1,用一个长度为101、最低频率为0、最高频率为0.5的扫频正弦信号作为

输入信号,计算其输出信号。你能用该系统对扫频信号的响应来解释Q2.1和Q2.2的结果吗?

输入信号21.510.521.510.5输出信号振幅0-0.5-1-1.5-2振幅050时间序号n1000-0.5-1-1.5-2050时间序号n100

Q2.7运行程序P2.3,对由加权输入得到的y[n]与在相同权系数下输出y1[n]和y2[n]相加得到的

yt[n]进行比较,这两个序列是否相等?该系统是线性系统吗?

加权输入:a? x1[n]+b? x2[n]的输出50振幅0-500510152025303540加权输入:a? y1[n]+b? y2[n]50振幅0-500x 10-155101520差信号253035405振幅0-5051015

答:可以看出这加权输入与输出的图像几乎是相差无几的,观察差信号的图像,纵坐标已达到10^(-15),可以看出是相差无几的,所以该系统是线性系统。

2025时间序号n303540Q2.8用三组不同的权系数a和b的值以及三组不同的输入频率重做Q2.7

答:改动后a和b值及输入频率和相应的运行结果均在下图:根据图进行分析,加权输入与输出的图像几乎是相差无几的,观察差信号的图像,纵坐标都达到10^(-15)或10^(-14),可以看出是相差无几的。所以系统为线性系统。 1.

加权输入:a? x1[n]+b? x2[n]的输出20振幅0-200510152025303540加权输入:a? y1[n]+b? y2[n]20振幅0-200x 10-155101520差信号253035405振幅0-505101520时间序号n25303540

2.

加权输入:a? x1[n]+b? x2[n]的输出100振幅0-1000510152025303540加权输入:a? y1[n]+b? y2[n]100振幅0-1000x 10-145101520差信号253035402振幅0-205101520时间序号n25303540

3.

加权输入:a? x1[n]+b? x2[n]的输出100振幅0-1000510152025303540加权输入:a? y1[n]+b? y2[n]100振幅0-1000x 10-145101520差信号253035405振幅0-505101520时间序号n25303540

Q2.9 初始条件非零时图像:

加权输入:a? x1[n]+b? x2[n]的输出20振幅0-200510152025303540加权输入:a? y1[n]+b? y2[n]50振幅0-50505101520差信号25303540振幅0-50510152025时间序号n303540

答:观察上图,看差信号,振幅达到3,可见加权输入与输出的图像相差较大,不是线性系统。

Q2.11

假另一个系统为y[n]=x[n]x[n-1]修改程序P2.3,计算这个系统的输出序列y1[n],y2[n]和

y[n]。比较y[n]和yt[n]。这两个序列是否相等?该系统是线性系统吗? clf;

n=0:200; a=2;b=-3;

s1=cos(2*pi*0.1*n); s2=cos(2*pi*0.4*n); x=a*s1+b*s2; x1=[0 s1 0]; x2=[0 0 s1]; x3=[0 s2 0]; x4=[0 0 s2]; x5=[0 x 0]; x6=[0 0 x]; y1=x1.*x2; y1=y1(2:202); y2=x3.*x4; y2=y2(2:202); y=x5.*x6; y=y(2:202); yt=a*y1-b*y2; d=y-yt;

subplot(3,1,1) stem(n,y); ylabel('振幅');

title('加权输入:a\\cdot x_{1}[n]+b\\cdot x_{2}[n]的输出'); subplot(3,1,2) plot(n,yt);

ylabel('振幅');

title('加权输入:a\\cdot y_{1}[n]+b\\cdot y_{2}[n]'); subplot(3,1,3) plot(n,d);

xlabel('时间序号n') ylabel('振幅'); title('差信号');

加权输入:a? x1[n]+b? x2[n]的输出5振幅0-5020406080100120140160180200加权输入:a? y1[n]+b? y2[n]5振幅0-510020406080100差信号120140160180200振幅0-100204060

答:观察上图,看差信号,可见加权输入与输出的图像相差较大,不是线性系统。

80100120时间序号n140160180200Q2.12运行程序P2.4并比较输出序列y[n]和yd[n-10]。这两个序列之间有什么关系?该系统是

时不变系统吗? clf;

n=0:40;D=10;a=3.0;b=-2;

x=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n); xd=[zeros(1,D) x];

num=[2.2403 2.4908 2.2403]; den=[1 -0.4 0.75]; ic=[0 0];

y=filter(num,den,x,ic); yd=filter(num,den,xd,ic); d=y-yd(1+D:41+D); subplot(3,1,1) stem(n,y); ylabel('振幅');

title('输出y[n]');grid; subplot(3,1,2) stem(n,yd(1:41)); ylabel('振幅');

title(['由于延时输入x[n',num2str(D),']的输出']);grid; subplot(3,1,3) stem(n,d);

xlabel('时间序号n');ylabel('振幅'); title('差值信号');grid;

输出y[n]200-20-40500510152025303540振幅由于延时输入x[n10]的输出振幅0-50105101520差值信号25303540振幅0-10510152025时间序号n303540

答:系统为线性时不变系统,yd为y时移10后的序列。

Q2.17

考虑另一个系统:y[n]=nx[n]+x[n-1]修改程序P2.4,以仿真上面的系统并确定该系统是

否为时不变系统。 clf;

n=0:40;D=10;a=3.0;b=-2;

x=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n); xd=[zeros(1,D) x]; num=[n 1]; den=[1 0];

y=filter(num,den,x); yd=filter(num,den,xd); d=y-yd(1+D:41+D);

subplot(3,1,1) stem(n,y); ylabel('振幅');

title('输出y[n]');grid; subplot(3,1,2) stem(n,yd(1:41));

ylabel('振幅');

title(['由于延时输入x[n',num2str(D),']的输出']);grid; subplot(3,1,3) stem(n,d);

xlabel('时间序号n');ylabel('振幅'); title('差值信号');grid;

输出y[n]40振幅200400510152025303540由于延时输入x[n10]的输出振幅200105101520差值信号25303540振幅0-10510152025时间序号n303540

答:差值为零系统为线性时不变系统。

Q2.26修改程序P2.6,将两个二阶系统顺序颠倒并在零初始条件下重复此过程。两个输出之间

有差别吗?

四阶实现的输出1振幅0-10510152025303540级联实现的输出1振幅0-10x 10-145101520差值信号253035400.5振幅0-0.50510152025时间序号n303540

Q2.28运行程序P2.7,对序列h[n]和x[n]求卷积,生成y[n],并用FIR滤波器h[n]

对输入x[n]滤波,求得y1[n]。y[n]和y1[n]有差别吗?为什么要使用对x[n]补零后得到的x1[n]作为输入来产生y1[n]?

用卷积得到的输出2010振幅0-10-2002468时间序号n由滤波生成的输出1012142010振幅0-10-2002468时间序号n101214

答:y[n]与y1[n]没有差别。序列h[n]和x[n]卷积得到的y[n]的长度h[n]和x[n]的长度之和再减去1,即9+7-1=15,而用FIR滤波器h[n]对输入信号x[n]滤波得到的y1[n]长度与x[n]相同,故要对x[n]补零后得到的x1[n](长度扩展为15),滤波后所得输出与y1[n]与y2[n]相同。

Q2.30程序中为什么要使用命令for和end?

For 后常为循环语句需执行的的循环次数,end表示循环语句执行完毕

在累加的过程中若|h(k)|的值小于10^(-6)S(K)已经收敛,所以不必再检查之后的值,所以用for ,end来进行判断

Q2.32程序P2.8确定的冲激响应所对应的离散时间系统是什么?运行程序P2.8,生成

该冲激响应。该系统稳定吗?若|h[K]|不小于10^(-6)且图形显示了一个衰减的冲激响应,用一个较大的N值再次运行程序P2.8。

321振幅0-1-2-3020406080100120时间序号n140160180200

321振幅0-1-2-30100200300400500600时间序号n7008009001000

答:该系统稳定。

Q2.33考虑用差分方程y[n]=x[n]-4x[n-1]+3x[n-2]+1.7y[n-1]-y[n-2]描述的离散时间系

统。修改程序P2.8,计算并画出上述系统的冲激响应。该系统稳定吗?

冲击响应42振幅0-2-4050100150时间序号n20025042振幅0-2-4020406080100120时间序号n140160180200

答:该系统不稳定。

第四次实验

第三章 离散时间信号的频域分析

Q3.1

在程序P3.1中,计算离散时间傅里叶变换的原始系列是什么?MATLAB命令pause的作

用是什么?

答;原始序列 H(jw)=(2+e^(-jw))/(1-0.6e^(-jw))pause的作用是暂时停止直到用户按任何键。

Q3.2

运行程序P3.1,求离散时间傅里叶变换的实部,虚部以及幅度和相位谱。离散时间福利

叶变换是w的周期函数吗?若是,周期是多少?描述这四个图形表示的对称性。

答;离散时间傅里叶变换是ω的周期函数,周期为2π。

H(ej?)的实部86振幅86H(ej?)幅度谱4振幅20-4-3-2-10\\ omega/\\piH(ej?)的虚部42振幅4212340-4-3-2-10\\ omega/\\pi相位谱[H(ej?)]1234以弧度为单位的相位210-1-2-4-3-2-10\\ omega/\\pi12340-2-4-4-3-2-10\\ omega/\\pi1234

Q3.3

j?修改程序p3.1,在范围0≤w≤∏内计算如下序列的离散时间傅里叶变换;

0.7?0.5e?j??0.3e?j2??e?j3?U(e)?1?0.3e?j??0.5e?j2??0.7e?j3?

并重做习题Q3.2。讨论你的结果。你能解释相位谱中的跳变吗?MATLAB命令unwrap可以移除跳变。试求移除后的相位谱。

本文来源:https://www.bwwdw.com/article/s4s3.html

Top