实验一离散时间信号的时域分析

更新时间:2023-08-09 23:09:01 阅读量: 工程科技 文档下载

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

实验一离散时间信号的时域分析

陈一凡20112121006

一、实验目的:

学习使用MATLAB程序产生信号和绘制信号;

学习使用MATLAB运算符产生基本离散时间序列——指数序列; 学习使用MATLAB三角运算符产生正弦序列;

学习使用MATLAB命令产生长度为N且具有零均值和单位方差的正态分布的随机信号;学习使用MATLAB中三点滑动平均算法来实现噪声的移除; 学习使用MATLAB程序产生振幅调制信号; 学习使用MATLAB函数产生方波和锯齿波; 二、实验原理简述:

运用运算符和特殊符号,基本矩阵和矩阵控制,基本函数,数据分析,二维图形,通用图形函数,信号处理工具箱等命令,产生以向量形式存储的信号。 三、 实验内容与实验结果

1、产生并绘制一个单位样本序列 运行程序

clf

n=-10:20;

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

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

实验结果如图1所示

图1

2.1、生成一个复数值的指数序列:

运行程序:

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('虚部');

实验结果如图2所示

实部

振幅

051015

2025时间序号n

虚部

303540

振幅

051015

2025时间序号n

3035

40

图2

2.2、生成一个实数值的指数序列: 运行程序:

clf;

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

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

实验结果如图3所示

振幅

时间序号n

图3

3、产生一个正弦信号: 运行程序:

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;

实验结果如图4所示

正弦序列

振幅

时间序号n

图4

4、产生长度为N且具有零均值和单位方差的正态分布的随机信号: 运行程序:

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

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

实验结果如图5所示:

扫频正弦信号

21.5

10.5

振幅

0-0.5-1-1.5-2

0102030

405060

时间序号n

708090100

图5

并产生如下所示序列:

x =

Columns 1 through 11

1.8005 -1.0754 0.4274 -0.0561 1.5652 1.0484 -0.1741 -1.9260 1.2856 -0.2212 0.4617 Columns 12 through 22

1.1677 1.6873 0.9528 -1.2949 -0.3772 1.7419 1.6676 -0.3589 1.5746 -1.7684 -0.5885 Columns 23 through 33

1.2527 -1.9606 -1.4444 -1.1889 -1.2051 0.4152 -0.9112 -1.2047 -1.9389 0.9871 -0.2196 Columns 34 through 44

1.7273 -0.1360 -0.3254 1.3849 0.1006 -1.1894 0.6885 1.3525 -1.9214 0.7251 -0.4821 Columns 45 through 55

1.3272 0.0113 0.8379 -0.2844 -0.7815 -1.2414 -1.2263 0.7289 -0.7889 0.1667 -1.3965 Columns 56 through 66

0.7916 -0.4865 1.4400 1.4146 0.3743 -0.0138 1.5991 1.2865 0.5796 1.2719 0.6409 Columns 67 through 77

-0.6321 -0.8411 -0.6352 0.1363 0.9085 -0.7628 1.3540 0.2723 -0.5183 0.8110 0.1863 Columns 78 through 88

-0.2205 0.7783 0.4852 1.1793 1.8274 0.0904 1.5206 -1.3082 1.9190 -0.9142 -0.9907 Columns 89 through 99

1.5030 0.9492 -1.4539 -1.9530 1.5756 -1.2034 -0.8051 0.6458 -0.8624 -0.1231 -1.7409 Column 100 1.9533

5、利用三点滑动平均算法实现信号中噪声的移除: 运行程序:

clf; R=51;

d=0.8*(rand(R,1)-0.5); m=0:R-1;

s=2*m.*(0.9.^m); x=s+d';

subplot(2,1,1);

plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('时间序号n');ylabel('振幅'); legend('d[n] ','s[n] ','x[n] ');

x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2);

plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n] ','s[n] ');

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

实验结果如图6所示:

10

5

振幅

0-5

时间序号n

86

振幅

420

时间序号n

图6

6.1、产生一个振幅调制信号: 运行程序:

n=0:100;

m=0.4;fH=0.1; fL=0.01; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; stem(n,y);grid;

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

实验结果如图7所示:

振幅

0102030

405060时间序列n

708090100

图7

6.2、产生频率随时间线性增加的扫频正弦信号: 运行程序:

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;

实验结果如图8所示:

扫频正弦信号

振幅

0102030

405060

时间序号n

708090100

图8

7.1、绘制最大振幅为2.7,周期为10,占空比为60%的方波信号: 运行程序:

t=0:30;

y=2.7*square(2*pi*0.1*t,60); stem(t,y);

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

实验结果如图9所示:

振幅

时间序号n

图9

7.2、绘制最大振幅为2.7,周期为10,占空比为30%的方波信号: 运行程序:

t=0:30;

y=2.7*square(2*pi*0.1*t,30);

stem(t,y);

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

实验结果如图10所示:

振幅

0510

15

时间序号n

202530

图10

7.3、产生一个振幅为2,周期为20的方波信号: 运行程序:

t=0:50;

y=2*sawtooth(2*pi*0.05*t) stem(t,y);

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

实验结果如图11所示:

振幅

时间序号n

图11

并产生了锯齿波序列值如下所示:

y =

Columns 1 through 11

-2.0000 -1.8000 -1.6000 -1.4000 -1.2000 -1.0000 -0.8000 -0.6000 -0.4000 -0.2000 0 Columns 12 through 22

0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 -2.0000 -1.8000 Columns 23 through 33

-1.6000 -1.4000 -1.2000 -1.0000 -0.8000 -0.6000 -0.4000 -0.2000 0 0.2000 0.4000 Columns 34 through 44

0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 -2.0000 -1.8000 -1.6000 -1.4000 Columns 45 through 51

-1.2000 -1.0000 -0.8000 -0.6000 -0.4000 -0.2000 0 7.4、产生一个振幅为2,周期为20的方波信号:

运行程序:

t=0:50;

y=2*sawtooth(2*pi*0.05*t,0.5) stem(t,y);

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

实验结果如图12所示:

振幅

时间序号n

图12

并产生了锯齿波序列值如下所示: y =

Columns 1 through 11

-2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 0.4000 0.8000 1.2000 1.6000 2.0000

Columns 12 through 22

1.6000 1.2000 0.8000 0.4000 0 -0.4000 -0.8000 -1.2000 -1.6000 -2.0000 -1.6000 Columns 23 through 33

-1.2000 -0.8000 -0.4000 0 0.4000 0.8000 1.2000 1.6000 2.0000 1.6000 1.2000 Columns 34 through 44

0.8000 0.4000 0 -0.4000 -0.8000 -1.2000 -1.6000 -2.0000 -1.6000 -1.2000 -0.8000 Columns 45 through 51

-0.4000 0 0.4000 0.8000 1.2000 1.6000 2.0000

四、实验分析:

针对实验1 产生并绘制了一个单位样本序列 n=-10:20即产生从-10到20的一个向量

u=[zeros(1,10) 1 zeros(1,20)];即产生单位样本序列 stem(n,u);即绘制单位样本序列 针对实验2 产生一个实指数序列 clf;即清除所有的内存变量

n=0:35;即产生一个从0到35的向量 a=1.2;K=0.2;即对对各系数进行限定 x=K*a.^n;即函数表达式

stem(n,x);即绘制实指数信号

xlabel('时间序号n');ylabel('振幅');即将横坐标记为时间序号n,纵坐标记为振幅 产生一个复数值的指数序列 c=-(1/12)+(pi/6)*i;即复数的表达式 K=2;即对常数进行定义

n=0:40;即产生一个从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('虚部');即对该图进行命名,名为虚部 针对实验3产生一个正弦序列 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;即产生二维图形

针对实验4产生一个随机信号

x=4*rand(1,100)-2;即产生长度为100且具有零均值和单位方差的正态分布的随机信号的函数表达式 plot(x);即绘制二维图形

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

针对实验5实现信号的噪声移除

R=51;

d=0.8*(rand(R,1)-0.5);即产生随机噪声 m=0:R-1;即产生未污染的信号

s=2*m.*(0.9.^m);即产生被噪声污染的信号 x=s+d';其中对d进行了转置 subplot(2,1,1);

plot(m,d','r-',m,s,'g--',m,x,'b-.');即绘制图形,m,s,x xlabel('时间序号n');ylabel('振幅'); legend('d[n] ','s[n] ','x[n] '); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2);

plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n] ','s[n] ');

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

针对实验6产生振幅调制信号

n=0:100;

m=0.4;fH=0.1; fL=0.01;即对高频和低频进行限定 xH=sin(2*pi*fH*n);即产生高频信号 xL=sin(2*pi*fL*n);即产生低频信号 y=(1+m*xL).*xH;即产生振幅调制信号 stem(n,y);grid;

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

产生一个扫频正弦函数

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;

针对实验7产生方波和锯齿波信号

t=0:30;时间范围是0到30,取样间隔为1

y=2.7*square(2*pi*0.1*t,60);产生一个高度为2.7占空比为6:4的方波

stem(t,y)

7.2、t=0:30时间范围是0到30,取样间隔为1

y=2.7*square(2*pi*0.1*t,30);产生一个高度为2.7占空比为3:7的方波 stem(t,y)

7.3、t=0:50时间范围是0到50,取样间隔为1

y=2*sawtooth(2*pi*0.05*t);即产生一个高度为2的锯齿波 stem(t,y);

7.4、t=0:50;时间范围是0到50,取样间隔为1

y=2*sawtooth(2*pi*0.05*t,0.5);产生一个高度为2的锯齿波 stem(t,y);

五、实验总结

在此次实验中,我学会了用MATLAB程序绘制图形,产生信号。 习题求解:

Q1.3修改程序P1.1,以产生带有延时11个样本的延时单位样本序列ud[]的。运行修改的程序并显示产生的序列。程序如下,结果如图13所示 clf;

n=-10:20;

u=[zeros(1,21) 1 zeros(1,9)]; stem(n,u);

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

单位样本序列

振幅

时间序号n

图13

Q1.14若参数a小于1,会发生什么情况?将参数a更改为0.9,将参数K更改为20,再次运行程序P1.3,程序如下,结果如图14所示 clf;

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

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

振幅

时间序号n

图14

分析:参数小于1表示生成一个递减的实数值的指数函数;

Q1.23修改上述程序,以产生长度为50、频率为0.08、振幅为2.5、相移为90度的一个正弦序列并显示他。该序列的周期是多少?程序如下,图形如图15所示: n=0:50; f=0.08; phase=90; A=2.5;

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

stem(n,x);

axis([0 50 -2 2]);

grid;

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

正弦序列

振幅

时间序号n

图15

分析:周期为25

Q1.31使用语句x=s+d能产生被噪声污染的信号吗?若不能,为什么? 程序如下: clf; R=51;

d=0.8*(rand(R,1)-0.5); m=0:R-1;

s=2*m.*(0.9.^m); x=s+d;

subplot(2,1,1);

plot(m,d,'r-',m,s,'g--',m,x,'b-.'); xlabel('时间序号n');ylabel('振幅'); legend('d[n] ','s[n] ','x[n] '); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2);

plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n] ','s[n] ');

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

程序在运行过程中出现了错误,不能产生被噪声污染的信号。原因:随机信号必须要经过转置才能八产生被噪声污染的信号。

Q1.34在载波信号xH[n]和调制信号zL[n]采用不同频率、不同调制指数m的情况下,运行程序P1.6,以产生振幅调制信号y[n]。程序如下,图形如图16所示。

n=0:100;

m=2;fH=0.5; fL=0.02; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; stem(n,y);grid;

xlabel('时间序列n');ylabel('振幅');n=0:100; m=2;fH=0.5; fL=0.02; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; stem(n,y);grid;

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

-14

振幅

102030

405060时间序列n

708090100

图16

Q1.38如何修改上述程序才能产生一个最小频率为0.1、最大频率为0.3的扫描正弦信号?程序如下所示,图形如17所示

n=0:100; a=0.1; b=0.3;

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;

扫频正弦信号

振幅

0102030

405060时间序号n

708090100

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

Top