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(,12kaaakkk;且121aa。现要求该数组中第一个大于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');
结果: