您的当前位置:首页正文

信号与系统实验

2023-09-20 来源:爱go旅游网


实验一 连续时间信号的Matlab表示与计算

一、实验目的

1、初步学习MATLAB语言,熟悉MATLAB软件的基本使用。 2、掌握用MATLAB描述连续时间信号方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方式再现各种信号的波形。

二. 实验内容与步骤

1、用MATLAB画出下列信号的波形。 (a) 单位阶跃信号u(t) (b) 单位冲激信号

2、用基本信号画出图1-14中的信号。

f1 f (t ) f2 (t)3(t)44224(t)

4

206t02346t0246t图1-14

3 用MATALB画出图1-15所示信号。其中,K=10,A=5。

f1(t)Kf2(t)At21231

02t0t

4 试用Matlab绘制出如下连续时间信号的时域波形,并观察信号是否为周期信号。若是周期信号,周期是多少?

(a) f(t)3sin(t)2sin(t)sin(2t)

2(b) f(t)sin(t)2cos(4t)sin(5t) (c) f(t)sin(t)2cos(2t) 三. 实验结果

1、用MATLAB画出下列信号的波形。

(a) 单位阶跃信号u(t) 程序: t=-1:0.001:1; ft=(t>=0); plot(t,ft); axis([-2 2 -2 2]); (b) 单位冲激信号程序: dt=0.01;

t1=-10;t2=10;t0=0;

(t)

2

t=t1:dt:t2; n=length(t); x=zeros(1,n);

x(1,(t0-t1)/dt+1)=1/dt; stairs(t,x);

axis([t1,t2,0,1.1/dt])

2、用基本信号画出图1-14中的信号。(a) t=0:0.001:6; T=2;

3

ft1=2*(rectpuls(t-1.5*T,1*T)); ft2=2*(rectpuls(t-1.5*T,3*T)); x=ft1+ft2; plot(t,x); axis([0 10 0 8]);

set(gca,'xtick',[0 2 4 6 8]); set(gca,'ytick',[0 2 4 6 ]); xlabel('t');

h=legend('f1(t)',2);

(b) t=0:0.001:6;

ft1=2*(tripuls(t-3,2,0)); ft2=2*(rectpuls(t-1.5*T,3*T)); y=ft1+ft2; plot(t,y); axis([0 8 0 8]);

set(gca,'xtick',[0 2 3 4 6]); set(gca,'ytick',[0 2 4 6]); xlabel('t');

h=legend('f(2)t',2);

4

(c) t=0:1:6;

ft=4*(rectpuls(t-3,5)); plot(t,ft); axis([0 8 0 8]);

set(gca,'xtick',[0 2 4 6]); set(gca,'ytick',[0 4]); xlabel('t');

h=legend('f3(t)',2);

3、用MATALB画出图1-15所示信号。其中,K=10,A=5。(a) K=10;w0=2*pi; t=0:0.01:2*pi; ft=K*abs((sin(t))); plot(t,ft); axis([0 8 0 20]);

set(gca,'xtick',[0 pi 2*pi]); set(gca,'ytick',[0 K]); xlabel('t');

h=legend('f1(t)',2);

5

(b) t=0; dt=0.001; for n=1:100 t1=n; t2=n+1; a1=t1:dt:t2; n1=length(a1); b1=zeros(1,n1); b1(1,(0-t)/dt+1)=1/dt; b1=b1/200; plot(a1,b1) hold on; h1=n-1; h2=n; x1=h1:0.001:h2; y1=5*((x1-h1).^2); plot(x1,y1) end

axis([0 5 0 6])

4、试用Matlab绘制出如下连续时间信号的时域波形 (a) t=0:0.01:4*pi;

y=3*sin((pi/2)*t)+2*sin(pi*t)+sin(2*pi*t); plot(t,y);

(b) t=0:0.01:4*pi;

6

y=sin(t)+2*cos(4*t)+sin(5*t); plot(t,y);

(c) t=0:0.01:4*pi;

y=sin(pi*t)+2*cos(2*t); plot(t,y);

执行结果如下图(a),(b),(c)所示 :

图(a)

图(b)

7

图(c)

实验二 连续时间系统的时域分析

一、实验目的:

1、掌握用Matlab进行卷积运算的数值方法和解析方法,加深对卷积积分的理解。

2、学习利用Matlab实现LTI系统的冲激响应、阶跃响应和零状态响应。 二、实验内容及步骤

实验前,必须首先阅读本实验原理,读懂所给出的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序应该完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序。

1、 编写程序Q2_1,完成f1(t)与f2(t)两函数的卷积运算。

8

2、 编写程序Q2_2,完成f1(t)与f2(t)两函数的卷积运算。

3、编写程序Q2_3。利用程序Q2_1,验证卷积的相关性质。 (a) 验证性质:x(t)*(t)x(t) (b) 验证性质:x(t)*(tt0)x(tt0)

4、编写程序Q2_4。某线性时不变系统的方程为

y(t)5y(t)6y(t)2f(t)8f(t),

(a)系统的冲激响应和阶跃响应。

(b)输入f(t)etu(t),求系统的零状态响应yzs(t)。 三. 实验结果

1.实验内容1的程序如下: p=0.01; t1=0:p:2; f1=0.5*t1;

9

t2=0:p:2; f2=0.5*t2; f=p*conv(f1,f2); t=0:p:4; plot(t,f);

执行结果如图(1)所示 :

2. 实验内容2的程序如下: p=0.01 ; T=1; t1=-3:p:3; t2=-2:p:2;

ft1=rectpuls(t1,4*T); ft2=2*rectpuls(t2,2*T); y=p*conv(ft1,ft2); subplot(3,1,1); plot(t1,ft1);

10

axis([-4 4 0 1.2]); subplot(3,1,2);

plot(t2,ft2);axis([-4 4 0 2.5]); subplot(3,1,3); plot(-5:p:5,y); axis([-4 4 0 5]); plot(-5:p:5,y); axis([-4 4 0 5]);

3.实验内容3的程序如下 : (a) t0=0;

t1=-2;t2=2; dt=0.001; t=t1:dt:t2; n=length(t); x=zeros(1,n);

11

x(1,(t0-t1)/dt+1)=1/dt; subplot(2,2,1); stairs(t,x); y=0.5*t; subplot(2,2,2) plot(t,y); h=conv(y,x); subplot(2,2,3); k=-4:0.001:4; plot(k,h);

t0=1;

t1=-2;t2=2;

12

(b)

dt=0.001; t=t1:dt:t2; n=length(t); x=zeros(1,n);

x(1,(t0-t1)/dt+1)=1/dt; subplot(2,2,1); stairs(t,x); y=0.5*t; subplot(2,2,2) plot(t,y); h=conv(y,x); subplot(2,2,3); k=-4:0.001:4; plot(k,h);

13

4. 实验内容2的程序如下:

a. 系统的冲激响应和阶跃响应程序分别为(1),(2): (1) a=[1 5 6]; (2) a=[1 5 6]; b=[0 2 8]; b=[0 2 8]; impulse(b,a,10) step(b,a,10) grid on grid on 它们的时域波形图分别如图(1) ,图(2)所示:

14

输入f(t)etu(t),求系统的零状态响应yzs(t),程序如下:

a=[1 5 6]; b=[2 8]; t=0:0.01:2; f=exp(-t); y=Lsim(b,a,f,t); plot(t,y)

运行结果如下:

15

b.

实验三 连续时间信号的频域分析

一、实验目的

1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法; 2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;

3、掌握连续时间傅里叶变换的分析方法及其物理意义;

4、掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质;

5、学习掌握利用MATLAB语言编写计算CTFS、CTFT和DTFT的仿真程序,并能利用这些程序对一些典型信号进行频谱分析,验证CTFT、DTFT的若干重要性质。 二、实验内容及步骤

1. 编写程序,绘制下面的信号的波形图:

16

111n x(t)cos(0t)cos(30t)cos(50t)sin()cos(n0t)

352n1n其中,0 = 0.5π,要求将一个图形窗口分割成四个子图,分别绘制cos(0t)、cos(30t)、cos(50t) 和x(t) 的波形图,给图形加title,网格线和x坐标标签,并且程序能够接受从键盘输入的和式中的项数。

2. 给程序Program3_1增加适当的语句,并存盘,使之能够计算例题3-1中的周期方波信号的傅里叶级数的系数,并绘制出信号的幅度谱和相位谱的谱线图。 三.实验结果

1.实验内容1的程序如下: w0=0.5*pi; t=-4:0.01:4;

N=input('Type in the number N= ');

x1=cos(w0*t);x2=cos(3*w0*t);x3=cos(5*w0*t); xt=0; for n=1:N;

xN=1/n*sin(n*pi/2)*cos(n*w0*t); xt=xt+xN; end

17

xt

subplot(2,2,1);plot(t,x1);

title('cos(w0t)');xlabel('t');grid on; subplot(2,2,2);plot(t,x2);

title('cos(3w0t)');xlabel('t');grid on; subplot(2,2,3);plot(t,x3);

title('cos(5w0t)');xlabel('t');grid on; subplot(2,2,4);plot(t,xt); title('xt');xlabel('t');grid on; 程序运行结果如下:

当输入N=7是时到如下图像:

2.实验内容2的程序如下所示: k = -10:10;

18

ak = ((-j).^k).* (sin((k+eps)*pi/2)./((k+eps)*pi)) phi = angle(ak); subplot(211) stem(k,abs(ak),'k.')

title('The Fourier series coefficients') xlabel('Frequency index k') subplot(212) stem(k,phi,'r.')

title('The phase phi(k) of x(t)') xlabel('Index k')

程序运行结果如下:

实验四:Wav信号的波形分析

一 实验目的

借助本实验帮助同学们巩固傅里叶变换及其反变换的知识,学习从时

19

域和频域两个角度来观察信号,并尝试利用短时傅里叶变换分析非平稳信号的频谱变化。 二 实验原理

借助傅里叶变换,信号可以时间函数或频率函数两种形式描述,特别是周期信号和准周期信号(前者由一个基频成分和若干谐波成分,后者虽可分解为几个正弦分量,但它们的周期没有公倍数),从频率域可以很清楚地了解它们由哪些正弦分量组成。而对于非平稳信号,最典型的例子就是语音信号,它是非周期的,频谱随时间连续变化,因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。最直观的想法就是用中心在某一时刻的时间窗截取一段信号,对其做傅里叶变换,得到这一时刻的频谱;然后将窗在时间轴上移动,从而得到不同时刻的频谱,这就是短时频谱的原理。最简单的窗就是矩形窗,即直接从原信号中截取一段。 三 实验内容

本实验利用matlab提供的工具来采集和分析声音信号的频谱,由以下几个部分组成:

(1). 声音的采集

Matlab提供了读入、录制和播放声音以及快速傅里叶变换的函数,分别是wavread、wavrecord、wavplay和fft。阅读这几个函数的帮助文档,熟练使用。

(2). 持续音的频谱分析

20

将Windows的系统目录下的ding.wav文件读入,这是一个双声道的声音,选择任一声道的信号,使用fft求取其频谱,并用plot显示它的幅度度,观察主要的正弦分量;分别求取2048、1024点FFT,观察产生的不同频谱;用ifft函数求取频谱的反傅里叶反变换,比较反变换后的信号波形与原始信号的波形;从频谱中找到幅度最大的正弦分量,构造一个同样幅度的正弦信号,将其波形与原始信号比较,并且试听一下。

(3). 时变音的短时频谱分析

使用”load chirp”载入matlab自带的一个时变音;从信号中依次截取1024个点,利用上述方法求取其幅度谱,并显示出来,观察幅度谱随时间的变化情况。

四 实验报告

>> x=wavread('D:\\MATLAB\\ding.wav'); >> f=fft(x,1024); >> f=abs(f); >> plot(f)

21

取1024点FFT产生的频谱

>> x=wavread('D:\\MATLAB\\ding.wav'); >> f=fft(x,2048); >> f=abs(f); >> plot(f)

取2048点FFT产生的频谱图

22

实验五: 波形合成与分解

1.实验目的

在理论学习的基础上,通过本实验熟悉信号的合成、分解原理,了解信号频谱的含义,加深对傅里叶变换性质和作用的理解。 2.实验原理

根据傅里叶分析的原理,任何周期信号都可以用一组三角函数

{sin(n0t);cos(n0t)}的组合表示,即:

x(t)a0a1cos(0t)b1sin(0t)a2cos(20t)b2sin(20t) 即可以用一组正弦波和余弦波来合成任意形状的周期信号。 3.实验内容 (1) 方波的合成

图示方波是一个奇谐信号,由傅里叶级数可知,它是由无穷个奇次谐波分量合成的,本实验用图形的方式来表示它的合成。方波信号可以

分解为:

23

x(t)2Asin(2nft)n,n1,3,5,7,9,

0n11用前5项谐波近似合成50Hz,幅值为3的方波,写出实验步骤。 a.只考察从 t0s到t10s这段时间内的信号。

b.画出基波分量y(t)sin(t)。

c.将三次谐波加到基波之上,并画出结果,并显示。

y(t)sin(t)sin(3*t)/3

d.再将一次、三次、五次、七次和九次谐波加在一起。

y(t)sin(t)sin(3*t)/3sin(5*t)/5sin(7*t)/7sin(9*t)/9

24

e.合并从基波到十九次谐波的各奇次谐波分量。

f.将上述波形分别画在一幅图中,可以看出它们逼近方波的过程。注意“吉布斯现象”。周期信号傅里叶级数在信号的连续点收于该信号,在不连续点收敛于信号左右极限的平均值。如果我们用周期信号傅里叶级数的部分和来近似周期信号,在不连续点附近将会出现起伏和超量。在实际中,如果应用这种近似,就应该选择足够大的N,以保证这些起伏拥有的能量可以忽略。

25

(2) 三角波的合成

三角波是一个偶谐信号,由傅里叶级数可知,它是由无穷个偶次谐波分量合成的,本实验用图形的方式来表示它的合成。

a. 将三次谐波加到基波之上,并画出结果,并显示。表达式为:

2y(t)1/24/π[cos(t)cos(3*t)/9]

>> y=0.5+(4/(pi^2))*((cos(t)).^2)+(4/((3*pi)^2))*((cos(3*t)).^2)

b.再将一次、三次、五次、七次和九次谐波加在一起。

>>y=0.5+(4/(pi^2))*((cos(t)).^2)+(4/((3*pi)^2))*((cos(3*t)).^2)+(4/((5*pi)^2))*((cos(5*t)).^2)

26

b. 合并从基波到十九次谐波的各偶次谐波分量。

>>y=0.5+(4/(pi^2))*((cos(t)).^2)+(4/((3*pi)^2))*((cos(3*t)).^2)+(4/((5*pi)^2))*((cos(5*t)).^2)+(4/((7*pi)^2))*((cos(7*t)).^2)+(4/((9*pi)^2))*((cos(9*t)).^2)+(4/((11*pi)^2))*((cos(11*t)).^2)+(4/((13*pi)^2))*((cos(13*t)).^2)+(4/((15*pi)^2))*((cos(15*t)).^2);

(3) 设计分析方波、三角波频谱的分析实验,写出实验步骤,并完成实验(并比较二者频谱的特点)。

27

方波频谱: N=128; T=10;

t=linspace(0,T,N);

y=sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9+sin(11*t)/11+sin(13*t)/13+sin(15*t)/15+sin(17*t)/17+sin(19*t)/19; dt=t(2)-t(1); X=fft(y); F=X(1:N/2+1); f=1/dt; f=f*(0:N/2)/N; plot(f,abs(F));

方波频谱图

28

三角波频谱: N=128; T=10;

t=linspace(0,T,N);

y=0.5+(4/(pi^2))*((cos(t)).^2)+(4/((3*pi)^2))*((cos(3*t)).^2)+(4/((5*pi)^2))*((cos(5*t)).^2)+(4/((7*pi)^2))*((cos(7*t)).^2)+(4/((9*pi)^2))*((cos(9*t)).^2)+(4/((11*pi)^2))*((cos(11*t)).^2)+(4/((13*pi)^2))*((cos(13*t)).^2)+(4/((15*pi)^2))*((cos(15*t)).^2); dt=t(2)-t(1); X=fft(y); F=X(1:N/2+1); f=1/dt; f=f*(0:N/2)/N; plot(f,abs(F));

实验六:典型连续信号和离散信号的时域波形

29

1.单边指数信号 t=0:0.01:10; y=1*exp(-0.4*t); plot(t,y) axis([0,10,0,1.2]) xlabel('t') ylabel('y(t)')

title(' 单边指数信号')

2.单位冲激信号 t=0:0.01:10; n=length(t); x=zeros(1,n);

30

x(1,501)=100; stairs(t,x) axis([0,10,0,120]) xlabel('t') ylabel('y(t)') title('单位冲激信号')

3.单位阶跃信号 t1=0:0.01:4; t2=4:0.01:10; n1=length(t1); n2=length(t2); u1=zeros(1,n1); u2=ones(1,n2);

31

plot(t1,u1) hold on plot(t2,u2) plot([4,4],[0,1]) hold off

title('单位阶跃信号y(t)') axis([0,10,-0.2,1.5])

4.矩形脉冲信号 t=-3:0.01:3; y=2*rectpuls(t,2); stairs(t,y); xlabel('t') ylabel('y(t)') title('矩形脉冲信号')

32

axis([-3,3,0,3])

5.正弦信号 t=0:0.01:10; y=5*sin(0.5*pi*t); plot(t,y) title('正弦信号') xlabel('t') ylabel('y(t)')

33

6.单位序列

function dwxulie(k1,k2,k0) k1=-8;k2=12;k0=-2; k=k1:k2; n=length(k); f=zeros(1,n); f(1,-k0-k1+1)=1; stem(k,f,'filled') axis([k1,k2,0,1.5])

title('单位冲序列')

7.单位阶跃序列

34

function jyxulie(k1,k2,k0) k1=-10;k2=10;k0=4; k=k1:-k0-1; kk=-k0:k2; n=length(k); nn=length(kk); u=zeros(1,n); uu=ones(1,nn); stem(kk,uu,'filled') hold on stem(k,u,'filled') hold off

title('单位阶跃序列')

35

axis([k1,k2,0,1.5])

36

信号与系统实验

37

实验报告

专业 电子信息工程 班级 电信10-2

学生 王建勇 学号 10034030231

指导教师 孙国玺

完成时间 2012 年 6 月 20 日

38

因篇幅问题不能全部显示,请点此查看更多更全内容