MATLAB系统仿真试题复习资料,有答案及MATLAB课程设计实验体会
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PART I 教材复习要点
第一章MATLAB入门
测试1.1
1.MATLAB的命令窗口的作用是什么?编辑/调试窗口?图象窗口?
MATLAB命令窗口是MATLAB起动时第一个看到的窗口,用户可以在命令窗口提示符">>"后面输入命令,这些命令会被立即执行。
命令窗口也可以用来执行M文件。
编辑/调试窗口是用来新建,修改或调试M文件的。
图像窗口用来显示MATLAB的图形输出。
2.列出几种不同的得到MATLAB帮助的方法。
(1)在命令窗口中输入help <command_name>,本命令将会在命令窗口中显示关于些命令的有信息。
(2)在命令窗口中输入lookfor <keyword>,本命令将会在命令窗口中显示所有的在第一注释行中包含该关键字的命令和函数。
(3)通过在命令窗口输入helpwin或helpdesk启动帮助浏览器,或者是在启动板中选择"Help"。
帮助浏览器包含了基于超文本的MATLAB所有特性的描述,HTML或PDF格式的在线手册,这是MATLAB 最全面的帮助资源。
3.什么是工作区?在同一工作区内,你如何决定它里面存储了什么?
工作区是命令、M文件或函数执行时被MATLAB使用的变量或数组的收集器,所有命令都在命令窗口(所有的脚本文件也是从命令窗口执行)共享公共工作区,因此它们也共享所有变量,工作区的内容可以通过whos命令来查看,或者通过工作区浏览器来图形化地查看。
4.你怎样清空MATLAB 工作区内的内容?
要清除工作区的内容,只需在命令窗口中输入clear或clear variables即可。
第二章MATLAB基础
测试2.1
1.数组,矩阵,向量有什么区别?
数组是在内存中被组织成行和列的数据集合,只有一个名称,数据要通过在数组名后面
圆括号里加上表示数据所在行和列的数字来访问。
术语"向量"通常用来描述只有一维的数组,而"矩阵"通常用来描述二维或更多维的数组。
2.回答关于下列矩阵的有关问题
⎥⎥
⎥⎦
⎤
⎢⎢⎢⎣⎡--=0.05.56.03.11.36.01.16.06.04.32.31.1C
(a)C 的大小是多少?这是一个3×4数组; (b)C(2,3)的值是多少?c(2,3) = -0.6;
(c)列出值为0.6的元素的下标?数组中值为0.6的元素是c(1,4),c(2,1)和c(3,2)。
3.确定下列数组的大小,通过whos 或工作空间窗口(The workspace browser )检查你的答案。
注意在本练习中后面的数组可能要用到前面数组的定义。
(a) u=[10 20*i 10+20] (b) v=[-1;20;3]
(c) w=[1 0 -9;2 -2 0;1 2 3] (d) x=[u' v] (e) y(3,3)=-7
(f) z=[zeros(4,1) ones(4,1) zeros(1,4)'] (g) v(4)=x(2,1)
数组大小分别是:(a) 1×3;(b) 3×1;(c) 3×3;(d) 3×2;(e) 3×3;(f) 4×3;(g) 4×1
4.w(2,1)的值是多少?w(2,1) = 2
5.x(2,1)的值是多少?x(2,1) = -20i
6.y(2,1)的值是多少? y(2,1) = 0
7.当语句(g )执行后,v(3)的值是多少?v(3) = 3
测试2.2
1. c 数组的定义如下,写出下面子数组的内容。
c =
1.1000 -3.2000 3.4000 0.6000 0.6000 1.1000 -0.6000 3.1000 1.3000 0.6000 5.5000 0 (a) c(2,:) (b) c(:,end) (c) c(1:2,2:end) (d) c(6)
(e) c(4:end) (f) c(1:2,2:4) (g) c([1 4],2) (h) c([2 2],[3 3])
答案:
(a) c(2,:) = [0.6 1.1 -0.6 3.1]
(b) d(:,4) = ⎣⎢⎢⎡⎦
⎥⎥⎤
0.63.10.0
(c) c(1:2,2:4) = ⎣⎢⎡⎦
⎥⎤
-3.2 3.40.61.1-0.63.1
(d) c(6) = 0.6
(e) c(4,end) = [-3.2 1.1 0.6 3.4 -0.6 5.5 0.6 3.1 0.0]
(f) c(1:2,2:end) = ⎣⎢⎡⎦⎥⎤
-3.2 3.40.61.1-0.63.1
(g) c([1 3],2) = ⎣⎢⎡⎦
⎥⎤
-3.20.6
(h) c([2 2],[3 3]) = ⎣⎢⎡⎦
⎥⎤
-0.6-0.6-0.6-0.6
2.当赋值语句执行后,下列数组的内容是多少? (a) a=[1 2 3; 4 5 6; 7 8 9]; a([3 1],:)=a([1 3],:); (b) a=[1 2 3; 4 5 6; 7 8 9]; a([1 3],:)=a([2 2],:); (c) a=[1 2 3; 4 5 6; 7 8 9]; a=a([2 2],:); 答案:
(a) a = ⎣⎢⎢⎡⎦⎥⎥⎤789456123 (b) a = ⎣⎢⎢⎡⎦
⎥⎥⎤
456456456 (c) a = ⎣⎢
⎡⎦
⎥⎤
45
6456
3.当数组执行后,下列数组a 的内容是多少? (a) a=eye(3,3); b=[1 2 3]; a(2,:)=b; (b) a=eye(3,3); b=[4 5 6 ]; a(:,3)=b'; (c) a=eye(3,3);
b=[7 8 9];
a(3,:)=b([3 1 2]);
答案:
(a) a = ⎣⎢⎢⎡⎦⎥⎥⎤100123001 (b) a = ⎣⎢⎢⎡⎦⎥⎥⎤104015006 (c) a = ⎣
⎢⎢
⎡⎦
⎥⎥⎤100010978
例2.1
假设a,b,c 和d 的定义如下
⎥⎦⎤⎢⎣⎡=1201a ⎥⎦⎤⎢⎣⎡-=1021b ⎥⎦
⎤
⎢⎣⎡=23c 5=d 分别指出下列表达式的运算结果 (a) a + b (b) a .* c (c) a * b (d) a * c (e) a + c (f) a + d (g) a .* d (h) a * d
答案: (a )
这是一个数组或矩阵加法:⎥⎦
⎤
⎢
⎣⎡=+2220b a 。
(b ) 这是一个数组乘法:⎥
⎦⎤
⎢⎣⎡-=1001*.b a 。
(c ) 这是一个矩阵乘法:⎥⎦⎤
⎢⎣⎡--=5221*b a 。
(d ) 这是一个矩阵乘法:⎥⎦
⎤
⎢⎣⎡=83*c a 。
(e ) 操作非法,两数组形不同 (f ) 数组与标量的加法:⎥⎦
⎤
⎢⎣⎡=+6756d a 。
(g )
数组乘法:⎥⎦⎤⎢
⎣⎡=51005
*.d a 。
(h ) 矩阵乘法:⎥⎦
⎤⎢
⎣⎡=51005
*d a 。
测试2.4
本测试提供了一个快速的检查方式,看你是否掌握了2.8和2.9的基本内容。
如果
你对本测试有疑问,你可以重读2.8和2.9,问你的老师,或和同学们一起讨论。
在附录B 中可以找到本测试的答案。
1.假设abcd 的定义如下,计算下面合法运算的结果,如果不合法,指出原因
⎥
⎦⎤
⎢⎣⎡-=2112a ⎥
⎦⎤
⎢⎣⎡-=1310b ⎥⎦
⎤⎢⎣⎡=21c
3-=d
(a) result = a .* c; (b) result = a * [c c]; (b) result = a .* [c c]; (d) result = a + b * c; (e) result = a + b .* c; 答案:
(a) 操作非法。
数据相乘必须有相同形式,或者数组与标量之间相乘。
(b) 合法矩阵相乘:result = ⎣⎢
⎡⎦
⎥⎤
4433
(c) 合法数据相乘:result = ⎣⎢
⎡⎦
⎥⎤
21-24 (d) 操作非法。
矩阵相乘b * c 产生一个 1×2数组,而a 是一个2×2数组,故相加非法。
(e) 操作非法。
在两个不同大小的数组之间相乘b .* c 是非法的。
2.求矩阵x ,已知Ax=B,
⎥⎥
⎥⎦⎤
⎢⎢⎢⎣⎡-=101232121A
⎥⎥
⎥⎦
⎤
⎢⎢⎢⎣⎡=011B 结果可通过x = A/B 操作得到:x = ⎣⎢⎢⎡⎦
⎥⎥⎤
-0.51.0-0.5
练习2.1
看下面的数组回答有关问题
⎥
⎥
⎥⎥⎦
⎤
⎢⎢⎢
⎢⎣⎡----=0.01.10.01.54
.13.14.03.01.01.24.38.26.61.10
.00.65.31
.20.01.11array a. array1的大小是多少?
b. array1(4,1)的值是多少?
c. array1(:,1:2)的大小和值为多少?
d.
array1([1 3],end)的大小和值为多少?
2.2
下面的变量名那些合法那些不合法.为什么? a. dog1 b. 1dog c. Do_you_know_the_way_to_san_jose d. _help e. What's_up?
2.3
写出下面的数组的大小和内容.注意后面的数组可能根据前面数组的定义. a. a=1:2:5; b. b=[a' a' a'];
c. c=b(1:2:3,1:2:3);
d. d=a+b(2,:);
e. w=[zeros(1,3) ones(3,1)' 3:5'];
f. b([1 3],2)=b([3 1],2);
2.4
数组定义如下,写下面的子数组的内容
⎥
⎥
⎥⎥⎦
⎤
⎢⎢⎢
⎢⎣⎡----=0.01.10.01.54.13.14.03.01.01.24.38.26.61.10
.00.65.31
.20.01.11array a. array1(3,:)
b. array1(:,3)
c. array1(1:2:3,[3 3 4])
d. array1([1 1],:)
2.6
a,b,c 的定义如下,如果下面运算是合法的,那么写出结果,如果不合法,说出原因.
⎥⎦⎤⎢⎣⎡--=2122a
⎥⎦
⎤⎢⎣⎡-=2011b
⎥⎦
⎤
⎢⎣⎡-=21a
)2(eye d =
a. result=a+b;
b. result=a*d;
c. result=a.*d;
d. result=a*c;
e. result=a.*c;
f. result=a\b;
g. result=a.\b;
h. result=a .^ b;
2.9
求下列联立方程组中的各x 的值
.20.40.50.40.40.40.20.60.40.60.20.40.60.30.100.20.20.50.60.30.40.60.10.30.50.40.60.10.10.40.60.20.50.10.20.00.10.40.30.10.50.2654321654321654321654321654321654321-=-++++-=+-+++-=----+-=-+--+-=++---=-++++-x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
测试5.1
本测试提供了一个快速的检查方式,看你是否掌握了5.1到5.3的基本内容。
如果你对本测试有疑问,你可以重读5.1到5.3,问你的老师,或和同学们一起讨论。
在附录B 中可以找到本测试的答案。
1. 脚本文件与函数的区别是什么?
脚本文件是保存在文件中的MATLAB 语句集合。
脚本文件共享命令窗口工作区,所以任何之前运行的脚本文件中定义的变量都能被当前脚本文件使用,脚本文件定义的变量在文件执行之后还保留在工作区中。
脚本文件没有输入参数,也没有输出参数,不过脚本文件之间可以通过工作区交换数据。
相反,每一个MATLAB 函数运行在它自己的独立工作区,函数通过输入参数列表获取输入数据,通过输出参数列表给调用者返回数据。
2. 自定义函数的help命令是如何工作的?
help命令显示某个函数的所有注释行,直到遇到空白注释行或执行语句为止。
3. 函数中的H1注释行有什么重要性?
H1注释行是文件中注释的第一行,这一行可以被lookfor命令搜索并显示。
应该把该函数的用途摘要写在这一行中。
4. 什么是按值传递机制?它对结构化编程有什么好处。
在值传递机制中,每个输入参数的副本而不是参数本身从调用者传递给函数。
这样设计可以避免输入数据在函数内被自由的修改,这可能并不是调用者实际上需要的,因而也为设计好程序提供保证。
5. 如何使MATLAB函数带有选择性参数。
MATLAB函数可以有任意数量的参数,并且并不是每次函数调用时,每个输出参数都必须具备。
nargin函数用来确定函数被调用时实际提供了多少个参数,而nargout函数用来确定函数被调用后实际上有多少个输出参数。
第7,8题中,请你确定函数的调用是否正确。
如果它是错误的,指出错误所在。
PART II 题型复习要点
一填空题:
1. MATLAB常用的4个操作界面(或窗口)有(指令窗口),(历史指令窗口),(当前目录浏览器)和(工作空间浏览器)。
2. MATLAB中的Inf或inf表示(无穷大),NaN或nan表示(非数),i或j表示(虚单元),eps表示(机器零阈值)。
3. MATLAB中的clc用于(清除指令窗内容),clf用于(清除图形窗),clear用于(清除工作空间里的内容)。
4. MATLAB中分号主要用作(数组行分隔符);(不显示运行结果指令);(指令行分隔符)。
5.MATLAB中用(回车或者enter)表示换行;如果要抑制显示结果,可在指令结束末尾加(分号或者“;”)符号。
6. 二维数组的标识有(“全下标”标识)(“单下标”标识)、(“逻辑1”标识)。
7. 一维数组的创建可以采用(逐个元素输入法)、(冒号生成法)、(定数线性采样法)。
8. 已知一个矩阵A,用全下标进行寻访,寻访它的第2行,第3列元素,可以用A(2,3)指令;寻访它的第2行的全部元素,可以用A(2,:)指令。
9. MATLAB语言最大的特点是(数值计算)和(可视化)。
10. 利用冒号运算符创建向量的基本语法如下:X = J:INC:K。
其中J 为(向量的第一个元素),而K为(向量的最后一个元素),INC 为(向量元素递增的步长)。
二选择题
1.MATLAB是 C (A.MATrix LABoraty B.MATrex LABoratoy C.MATrix LABoratoy)的缩写,它是一种以矩阵运算为基础的程序语言,以A (A.解释B.编译)方式工作,键入程序立即得出结果,人机交互性能好。
2. MATLAB的变量名可以包括ACD(A.英文字母B.常用运算符C.下划线D.阿拉伯数字E.控制字符),并且第一个字符必须是A(A.英文字母B.常用运算符C.下划线D.阿拉伯数字E.控制字符)。
MATLAB对大小写__C__(A.不敏感B.无关C.敏感),A和a被看作两个__B_(A.相同B.不同)的变量。
3. MATLAB预定义了一系列特殊变量,其中__D_代表圆周率,_F__代表机器零阈值(浮点数精度),__C_代表无穷大,__B_代表非数,__E_代表虚数单位。
(A.ans B.NaN C.Inf D.pi E.i F.eps G.exp)
4.在MATLAB中,每一个变量都被认为是___B_(A.矩阵B.向量C.标量),每一个元素都被看作__B__(A.整数B.复数C.实数)。
5.下列哪些是MATLAB预定义的变量名A D E。
(A.eps B.exp C.abs D.NaN E.ans)
6. 请指出下列变量名中,哪些是合法的B E。
(A. abcd-2 B.abcd_2 C.2_abcd D.a变量E.ABCD2)
7. 数组运算是对数组中的元素逐个进行运算。
下列属于矩阵运算有A
D G,属于数组运算有B C
E F。
(A.∙* B.\ C.* D.∙\ E.^ F./ G.∙^)
8. B (A.非数B.空矩阵C.全零矩阵)是指没有任何元素的矩阵,对任意矩阵赋值该矩阵,可以使它的元素__B_(A.消失B.清零)。
9.下列__ABD___运算会产生非数数据。
(A.0/0 B.∞/∞C.0×0 D.0×∞E.0-0)
10.产生对角线上为全1,其余为0的2行3列矩阵的命令是__C__ A.ones(2,3) B. ones(3,2) C. eye(2,3) D. eye(3,2)
11.符号计算中的关系运算包括 C D (A.> B.< C.= = D.~= E.>= F.<=)
12.当不指定变量时,MATLAB里的 C (A.sym B.syms C.findsym)函数可自动识别独立自变量;其中 A (A.x B.y C.X D.Y)是首选符号变量。
13.已知a=0:4. b=1:5,下面的运算表达式出错的为 C 。
(A.a+b B.a./b C.a’*b D.a*b)
14.2*pi*(0:10)/10指令执行后,产生的采样点个数为 C 个。
(A.9 B.10 C.11 D.12)
15.想查看工作空间中的全部变量,下面哪些指令可以实现AC 。
(A.who B.class C.whos D.isa)
16. 下列关于主函数的说法正确的有 B C D。
(A.主函数必须与保存文件同名B.在指令窗或其它函数中可以直接调用C.在M函数文件中由第一个function引出D.每个函数文件中都必须有主函数)
17.在命令窗中键入__B_(A.fig B.figure C.clf D.figuer),会得到一个空白的图形窗。
18.命令窗的输入行具有文字处理相似的编辑功能:__C_(A.Space B.Alt C.ESC)键用来清除当前输入行,回到空白状态;__A_(A.↑B.↓C.←D.→)键可以调出上一行历史命令,_B_(A.↑B.↓C.←D.→)键调出下一行命令,在需要调出曾经键入过的命令、修改重新执行时,可大大提高效率。
19.在命令窗中键入指令r=(-8)^(1/3),得到r的结果为__B__。
(A.-2.0000 + 0.0000i B.1.0000 + 1.7321i C.-1.0000 - 1.7321i D.1.0000 - 1.7321i)
三简答题
1.简述MATLAB命令窗的主要作用。
命令窗口是MATLAB的主要交互窗口,用于输入命令并显示除图形以外的所有执行结果。
是MATLAB提供给用户使用的管理功能的人机界面,其管理功能包括:管理工作空间中的变量、数据的输入输出的方式和方法,开发、调试、管理M文件和M函数的各种工具。
2.简述MATLAB如何解释命令窗口输入的指令。
MATLAB搜索次序如下:检查名字是否为变量,如果是则显示变量,否则进行下一步;检查名字是否为内建函数,如果是,则执行该函数,否则进行下一步;检查名字是否为当前目录下的M文件,如果是,则执行该文件,否则执行下一步;检查名字是否为搜索路径上的M 文件,如果是,则执行该文件。
3.简述MATLAB函数的基本结构。
典型M函数文件的结构:函数申明(定义)行(Function declaration line)、H1行(The first help text line)、在线帮助文本(Help text)区、编写和修改记录、函数体(Function body)。
4.简述绘制二维图形的一般步骤。
绘制二维图形的一般步骤为:曲线数据准备、选定图形窗及子图位置、调用二维曲线绘图指令、设置轴的范围、坐标分格线、图形注释、图形的精细操作。
5.典型M函数文件的结构包括哪几个部分?其中哪两部分是构成M 函数文件所必不可少的?
包括:函数申明行,H1行,在线帮助文本,编写和修改记录,和函数体。
其中只有函数申明行和函数体是比不可少的。
6.指令clear,clc,clf各有什么作用?
clear:清除工作区间中的全部变量;(2分)
clc:清除指令窗中的全部内容;(2分)
clf:清除图形窗。
(2分)
7. 数据可视化的一般步骤是什么?其中哪几步是必不可少的?
答:包括:数据准备,选定图形窗及子图位置,调用绘图指令,设置轴的范围和坐标方格线,图形注释,着色、明暗、灯光、材质处理(三维图形)。
其中数据准备和调用绘图指令是必不可少的。
四:分析综合
1. clear; A=ones(3,3); A(4,5)=5
A=
1 1 1 0 0
1 1 1 0 0
1 1 1 0 0
0 0 0 0 5 2. A=zeros(2,4);A(:)=1:8
A=
1 3 5 7
2 4 6 8
s=[2 3 5];Sa=[10 20 30];
A(s)=Sa
A=
1 20 30 7
10 4 6 8
A(:,[2 3])=[ ]
A=
1 7
3.A=[1,2;3,4]; B=[-1,-2;2,1];
A.*B
ans=
-1 -4
6 4
A*B
ans=
3 0
5 -2
4. clear; D=reshape(1:9,3,3) D=
1 4 7
2 5 8
3 6 9
X= diag(D)
X=
1
5
9
10 8
5. A=[1,2;3,4]; B=[-1,-2;2,1];S=3;
A.*B
ans =
-1 -4 6 4
A*B
ans = 3 0
5 -2
五 编程题目 1、已知函数)4cos(2
/t e
y t -=。
(1)绘制在区间[0,4π]上的曲线。
要求函数曲线用蓝色实线,包络用红色虚线,采样间隔为π/50。
(2)在原图上用黄色点划线叠绘)9sin(1t y =的图形
解:(1)clear; ___ t=0:π/50:4*π____; y0=exp(-t/2); y=_ y0.*cos(4*t)_ __; plot(t,y,'b-',t,[y0;-y0],'__r:_') (2) hold on ;
S.*A
ans =
3 6
9 12
S*B
ans =
-3 -6
6 3
y1=sin(9*t); plot(t,y1,’y-.’) hold off
2、设)
(22y x e
z +-=求定义域x=[-3,3],y=[-3,3]内的z 值,并画出
曲面图(网格取0.1见方)。
x=-3:0.1:3; y=x;
_[X,Y]=meshgrid(x,y)_ _; _Z=exp(-(X.^2+Y.^2)) _; 3.
请绘制出两条曲线y=sin(x)和y=cos(x),x 在0到2π之间。
要求:
(1)加上网格线;(2)X 轴标注“Independent Variable X ”,Y 轴标注“Depentent Variable Y1&Y2”;(3)标题为“Sine and Cosine Curve ”;(4)在[1.5,0.3]处加标注“cos (x )”;(5)坐标轴控制:X 轴范围0到2π,Y 轴范围-0.9到0.9。
X=0:pi/10:2*pi; y1=sin(x); y2=cos(x); Plot(x, y1, x, y2); gird on
xlable (‘Independent Variable X ’); ylable (‘Dependent Variable Y); title (‘Sine and Cosine Curve ’);
text (1.5, 0.3, ‘cos(x)’); axis ([0 2*pi -0.9 0.9])
4. 画出2
2
22)
sin(y
x y x z ++=
所表示的三维曲面。
y x ,的取值范围是]8,8[-
x=-8:0.5:8; %定义自变量x 的一维刻度向量 y=x;
%定义自变量y 的一维刻度向量
[X,Y]=meshgrid(x,y);
R=sqrt(X.^2+Y.^2); %计算中间变量22y x R +=
Z=sin(R)./R;
%计算相应的函数值R
R
z sin =
mesh(X,Y,Z); %或用surf(X,Y,Z);画图
5. 设)
(22y x xe
z +-=
(1)求定义域x=[-3,3],y=[-3,3]内的z 值,并画出曲面图(网格取0.1见方)。
(2)画出z1=0.05x-0.05y+0.1的曲面图,叠加在上图中。
解:(1) clear; x=-3:0.1:3; y=x;
[X,Y]=meshgrid(x,y);;
Z=X.*exp(-(X.^2+Y.^2));surf(X,Y,Z) (2) hold on
Z1=0.05*X-0.05*Y+0.1;
surf(X,Y,Z1) hold off
6. 绘制衰减振荡函数)4cos(2
/t e
y t -=在区间[0,4π]上的曲线及其包络。
要求函数曲线用蓝色实线,包络用红色虚线,采样间隔为π/50。
解: clear; t=0:pi/50:4*pi; y0=exp(-t/2); y=y0.*cos(4*t); plot(t,y,'b-',t,[y0;-y0],'r:') grid
7. 在同一图上分别用红色实线和蓝色虚线绘制y1=x.*sin(x)和y2=cos(x).*x 在区间[0,4*pi]的曲线,采样点数为101,并进行坐标轴名(lable ),和图例说明(legend ),并打网线。
x=0:4*pi/100:4*pi; (1分) y1=x.*sin(x); (0.5分) y2=cos(x).*x; (0.5分) plot(x,y1,'r-',x,y2,'b:') (2分) xlabel('x'),ylabel('y')
legend('x*sin(x)','cos(x)*x') (1分) grid on; (1分)
六根据程序添加注释
1.clear;clf; %清工作空间,清图形窗
t=(pi*(0:1000)/1000)';y1=sin(t);y2=sin(10*t);
subplot(1,2,1),plot(t,y1); %将当前图形窗分成1×2幅子图,在第1幅图上画y1
axis([0,pi,-1,1]) %控制坐标轴范围,横坐标0到π,纵坐标-1到1 subplot(1,2,2),plot(t,y2); %将当前图形窗分成1×2幅子图,在第2幅图上画y2
axis([0,pi,-1,1])
2.clear;
t=2*pi*(0:20)/20; %在0到2*pi间取21个采样点
y=cos(t).*exp(-0.4*t);
stem(t,y,'g');
hold on; %保持当前图形,使以后的图形叠绘在当前图上stairs(t,y,'r');
hold off; %关闭叠绘
3、function y=polyadd(x1,x2) %定义函数名及调用格式
n1=length(x1);n2=length(x2); %测量两个输入多项式x1,x2的长度if n1>n2 x2=[zeros(1,n1-n2),x2]; %如果x1较长,则在x2前补0使与x1同长
elseif n1<n2 x1=[zeros(1,n2-n1),x1]; %否则,在x1前补0使与x2同长
end,y=x1+x2; %保证x1,x2同长后,相加课程设计实验体会学生姓名:X X X
学生学号:
专业班级:光信息科学与技术
指导老师:miss Chen
学院:信息工程学院
题目: MATLAB学期实验总结
MATLAB概念及介绍
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和
数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB集成环境主要包括五个部分:MATLAB语言、MATLAB工作环境、句柄图形、MATLAB数学函数库和数学建模、小波分析、MATLAB API(App lication Program Interface)。
MATLAB语言是以数组为基本数据单位,包括控制流程语句、函数、数据结构、输人输出及面向对象等特点的高级语言。
利用SIMULINK对系统进行仿真与分析,在进入虚拟实验环境后,不需要书写代码,只需使用鼠标拖动库中的功能模块并将它们连接起来,再按照实验要求修改各元器件的参数。
通过虚拟实验环境建立实验仿真电路模型,可使一些枯燥的电路变得有趣味,复杂的波形变得形象生动,使得各种复杂的能量转换过程比较直观地呈现。
1.1、MATLAB语言特点及优势
1.1.1、语言特点
MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。
MATLAB的最突出的特点就是简洁。
MATLAB 用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。
MATLAB给用户带来的是最直观、最简洁的程序开发环境。
以下简单介绍一下MATLAB的主要特点。
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。
MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要
的编程工作。
由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。
(2)运算符丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C 语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短,具体运算符见附表。
(3)MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。
(4)语法限制不严格,程序设计自由度大。
例如,在MATLAB里,用户无需对矩阵预定义就可使用。
(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
(6)MATLAB的图形功能强大。
在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。
MATLAB还具有较强的编辑图形界面的能力。
(7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
(8)功能强劲的工具箱是MATLAB的另一重大特色。
MATLAB包含两个部分:核心部分和各种可选的工具箱。
核心部分中有数百个核心内部函数。
其工具箱又可分为两类:功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能。
功能性工具箱能用于多种学科。
而学科性工具箱是专业性比较强的,如control、toolbox、signal processing toolbox、communication toolbox等。
这些工具箱都是由该领域内
的学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。
下表列出了MATLAB的核心部分及其工具箱等产品系列的主要应用领域。
(9)源程序的开放性。
开放性也许是MATLAB最受人们欢迎的特点。
除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
1.1.2优势
(1)友好的工作平台和编程环境
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
(2)简单易用的程序语言
Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C
++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
(3)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++ 。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
(4)出色的图形处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特
殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
(5)应用广泛的模块集合工具箱
1.1.3、MATLAB的功能详解
(1)、MATLAB有着强大的功能,可以用来进行多种工作,具体如下:数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理技术、数字信号处理技术、通讯系统设计与仿真、财务与金融工程等。
由于MATLAB功能太多,不可能一一介绍,并且每一个功能涉及内容又很多,(2)、介绍起来比较繁琐,因此我们只以图形处理功能为例,通过对MATLAB 图形处理的介绍来展示它的强大功能,并以点代面,进而进一步体现MATLAB 的发展现状。
(3)、MATLAB提供了大量用于将矢量数据以曲线图形方式进行显示的函数,包括用于实现图标绘制、科学曲线绘制和各种专业数据可视化显示的二维图形绘制函数;用于表示向量场的数据及二元函数的图形表达的三维图形绘制函数;提供了用于图形效果高级处理的相关函数以及图形句柄操作函数;柱状图、饼图和直方图等特殊图形绘制函数;动画制作等丰富的3D可视化功能。
1.2、课程实验设计思想
我们基于MATLAB R2014A。
1)展示一些基本的数值计算;2)通过软件展示几例基本的函数;3)应用简单的程序展示信号系统中一些基本性质,并应
用图形可视化。
1.2.1、GUI图形设计简介
1.2.2、建立GUI对象
首先打开一个空白的GUI面板,并在其布局编辑器中添加控件
1.2.3、修改控件属性
1.2.4、MATLAB中excel的调用
在某些情况下,题设中给出了一系列数据,如学生成绩单实现成绩情况显示图,我们知道,excel的绘图功能特别强大,尤其是面对此类问题,excel可以根据简单的的公式实现强大的数据运算,所以学会MATLAB和excel结合,会给我们带来很大的帮助。
这就需要应用MATLAB与excel的数据交互调用功能,即xlsread调用函数,function sure_Callback(hObject, eventdata, handles) %导入数据确定按钮
[FileName,PathName]=uigetfile({'*.xls'},'Choose a file');
str=[PathName,FileName];
set(handles.daoru,'string',str); %显示入可编辑数据导入文本框
[data,text_data]=xlsread(str); %读取str并生成新的数组。