MATLAB实验报告(信号与线性系统分析)

  • 格式:doc
  • 大小:2.71 MB
  • 文档页数:18

实验一 MATLAB的基本使用

【一】 实验目的

1.了解MATALB程序设计语言的基本特点,熟悉MATLAB软件的运行环境;

2.掌握变量、函数等有关概念,掌握M文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力;

3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。

【二】 MATLAB的基础知识

通过本课程的学习,应基本掌握以下的基础知识:

一. MATLAB简介

二. MATLAB的启动和退出

三. MATLAB使用界面简介

四. 帮助信息的获取

五. MATLAB的数值计算功能

六. 程序流程控制

七. M文件

八. 函数文件

九. MATLAB的可视化

【三】上机练习

1. 仔细预习第二部分内容,关于MATLAB的基础知识。

2. 熟悉MATLAB环境,将第二部分所有的例子在计算机上练习一遍

3. 已知矩阵123456789,987654321BA。求A*B,A .* B,比较二者结果是否相同。并利用MATLAB的内部函数求矩阵A的大小、元素和、长度以及最大值。

解:代码:A=[1,2,3;4,5,6;7,8,9];

B=[9,8,7;6,5,4;3,2,1];

A*B

A.*B

两者结果不相同A*B=30 24 18

84 69 54

138 114 90

A.*B= 9 16 21

24 25 24

21 16 9

求A矩阵的行和列: [M,N]=size(A)

M =

3

N =

3

求A矩阵的长度:x=length(A)

x =

3

元素和:sum(sum(A))

ans =

45

最大值:max(max(A))

ans =

9

4. Fibonacci数组的元素满足Fibonacci规则:),2,1(,12kaaakkk;且121aa。现要求该数组中第一个大于10000的元素。

1) 在命令窗口中完成;

2) 利用M文件完成;

3) 自己定义一个函数文件,并在命令窗口中调用该函数完成。

解:(1)代码:

b=1;

s=2;

while s<10000

c=s;

s=s+b;

b=c;

end

结果:s

s =

10946

(2)M文件中代码:(保存文件名为Untitled)

结果:Untitled

s =

10946

(3)代码:

结果:Fibon

s =

10946

5. 在同一个图形窗口的两个子窗口中分别画出)4cos(x(红色、虚线)和)8cos(x(蓝色、星号)的波形。要求有标题,x、y轴有标注。

解:代码:x=0:0.05*pi:4*pi;

figure(1);

subplot(1,2,1);

plot(x,(cos((pi/4)*x)),'r:');

title('cos((pi/4)*x)');

xlabel('X');

ylabel('Y');

subplot(1,2,2);

plot(x,(cos((pi/8)*x)),'b*');

title('cos((pi/8)*x)');

xlabel('X');

ylabel('Y');

结果:

【四】思考题

1. 在语句末加分号“;”和不加分号有什么区别?

2.M文件和函数文件有什么异同之处?

3.矩阵乘(*)和数组乘(.*)有何不同?

实验二 信号的表示及可视化

【一】实验目的

1. 掌握连续信号的MATLAB表示方法(表达式及图形描述);

2. 掌握离散序列的MATLAB表示方法(表达式及图形描述);

【二】实验原理

在MATLAB中通常用两种方法来表示信号,一种是向量表示信号,另一种则是用符号运算的方法来表示信号。用适当的MATLAB语句表示出信号后,我们就可以利用MATLAB的绘图命令绘出直观的信号波形。

【三】 上机练习

1.认真预习实验原理的内容,将所有例题在计算机上练习一遍。

2. 用MATLAB命令绘制单边指数信号e -1.5 tε(t)在时间0

解:代码:syms t f

f=sym(heaviside(t)*eps^(1.5*t))

ezplot(f,[0,3])

text(3.1,0.05,'t')

结果:

3. 绘制δ(t-2),-1

解:M文件:

结果:chongji(-1,5,-2)

4. 绘制ε(k-3),-1≤k≤5及ε(k+1),-5≤k≤2。

解:M文件:

结果:(1): jyxulie(-1,5,-3)

(2)jyxulie(-5,2,1)

5. 考虑下面3个信号:

f1(n)=cos(2πn/N)+2cos(3πn/N)

f2(n)=2cos(2n/N)+2cos(3n/N)

f3(n)=cos(2πn/N)+3cos(5πn/N)

假设对每个信号N=6。试确定上述信号是否是周期的。如果是,则确定信号的周期,并画图表示出该信号的两个周期;如果不是周期的,在[0,4N]的范围内画出该信号,并说明原因。

解:代码:k=0:40;

subplot(3,1,1)

stem(k,cos(2*pi*k/6)+2*cos(3*pi*k/6),'filled')

title('cos(2*pi*k/6)+2*cos(3*pi*k/6)')

subplot(3,1,2)

stem(k,2*cos(2*k/6)+2*cos(3*k/6),'filled')

title('2*cos(2*k/6)+2*cos(3*k/6))')

subplot(3,1,3)

stem(k,cos(2*pi*k/6)+3*cos(5*pi*k/6),'filled')

title('cos(2*pi*k/6)+3*cos(5*pi*k/6)')

结果:

可得1,3是周期信号

2是非周期信号

【四】 思考题

1. 观察例2-1的执行结果,当把时间间隔p取得更小(例如为0.02)时,观察执行结果,比较两结果用何不同,为什么?

2. 例2-3中的hold on和hole off命令的作用是什么?

实验三 信号的时域运算、时域变换及MATLAB实现

【一】实验目的

1. 掌握信号时域运算的MATLAB实现方法

2. 掌握信号时域变换的MATLAB实现方法

【二】实验原理

信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。

一. 连续信号的时域运算与时域变换

MATLAB可以有两种方法来表示连续信号。用这两种方法均可实现连续信号的时域运算和变换,但用符号运算的方法则较为简便。

二. 离散序列的时域运算及时域变化

对于离散序列来说,序列相加、相乘是将两序列对应时间序号的值逐项相加或相乘,平移、反折及倒相变化与连续信号的定义完全相同,这里就不再赘述。但需要注意,与连续信号不同的是,在MATLAB中,离散序列的时域运算和变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量必须具有相同的维数。

【三】上机练习

将实验原理中提到的例子在计算机上全部练习一遍;

1. 已知信号其它020104)1(41)(ttttf,画出)42()(tftf及的波形;

解:代码:syms t f

f=sym('1/4*(t+1)*(heaviside(t+4)-heaviside(t))+(heaviside(t-2)-heaviside(t))')

subplot(2,1,1),ezplot(f,[-4,5])

y=subs(f,t,-2*t-4)

subplot(2,1,2),ezplot(y)

结果:

2. 已知两个连续信号)2sin()(,10,)(21ttftttf,用MATLAB绘出下列信号的波形:

1))()()(113tftftf 2))]()([)(114tftftf

3))()()(325tftftf 4))()()(216tftftf

解:代码:syms t f

f1= -t*(heaviside(t)- heaviside(t+1))

f2=sin(2*pi*t)

y=subs(f1,t,-t)

f3=f1+y

subplot(2,2,1), ezplot(f3)

ylabel('f3');

f4=-1*f3

subplot(2,2,2), ezplot(f4)

ylabel('f4');

f5=f2*f3

subplot(2,2,3), ezplot(f5)

ylabel('f5');

f6=f1*f2

subplot(2,2,4), ezplot(f6)

ylabel('f6');

结果: