MATLAB系统仿真试题复习资料,有答案(12页).doc
-MATLAB系统仿真试题复习资料,有答案-第 12 页PART I 教材复习要点第一章 MATLAB入门测试1.11.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.11.数组,矩阵,向量有什么区别?数组是在内存中被组织成行和列的数据集合,只有一个名称,数据要通过在数组名后面圆括号里加上表示数据所在行和列的数字来访问。术语"向量"通常用来描述只有一维的数组,而"矩阵"通常用来描述二维或更多维的数组。2.回答关于下列矩阵的有关问题(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×14.w(2,1)的值是多少?w(2,1) = 25.x(2,1)的值是多少?x(2,1) = -20i6.y(2,1)的值是多少? y(2,1) = 07.当语句(g)执行后,v(3)的值是多少?v(3) = 3测试2.21. 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) = (c) c(1:2,2:4) = (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) = (g) c(1 3,2) = (h) c(2 2,3 3) = 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 = (b) a = (c) a = 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 = (b) a = (c) a = 例2.1假设a,b,c和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)这是一个数组或矩阵加法:。(b)这是一个数组乘法:。(c)这是一个矩阵乘法:。(d)这是一个矩阵乘法:。(e)操作非法,两数组形不同(f)数组与标量的加法:。(g)数组乘法:。(h)矩阵乘法:。测试2.4本测试提供了一个快速的检查方式,看你是否掌握了2.8和2.9的基本内容。如果你对本测试有疑问,你可以重读2.8和2.9,问你的老师,或和同学们一起讨论。在附录B中可以找到本测试的答案。1.假设abcd的定义如下,计算下面合法运算的结果,如果不合法,指出原因(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 = (c) 合法数据相乘:result = (d) 操作非法。矩阵相乘b * c 产生一个 1×2数组,而a是一个2×2数组,故相加非法。(e) 操作非法。在两个不同大小的数组之间相乘b .* c是非法的。2.求矩阵x,已知Ax=B,结果可通过x = A/B操作得到:x = 练习2.1看下面的数组回答有关问题a.array1的大小是多少?b.array1(4,1)的值是多少?c.array1(:,1:2)的大小和值为多少?d.array1(1 3,end)的大小和值为多少?2.2下面的变量名那些合法那些不合法.为什么?a. dog1b. 1dogc. Do_you_know_the_way_to_san_josed. _helpe. 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数组定义如下,写下面的子数组的内容a. array1(3,:)b. array1(:,3)c. array1(1:2:3,3 3 4)d. array1(1 1,:)2.6a,b,c的定义如下,如果下面运算是合法的,那么写出结果,如果不合法,说出原因.a. result=a+b;b. result=a*d;c. result=a.*d;d. result=a*c;e. result=a.*c;f. result=ab;g. result=a.b;h. result=a . b;2.9求下列联立方程组中的各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题中,请你确定函数的调用是否正确。如果它是错误的,指出错误所在。7.out = test1(6);function res = test1(x, y)res = sqrt(x .2 + y .2);函数调用不正确。调用test1必须提供二个输入参数。在这种情况下,变量y在test1中将没有定义,函数被忽略。8.out = test2(12);function res = test2(x, y)error (nargchk(1,2,nargin);if nargin = 2res = sqrt(x .2 + y .2);elseres = x;end函数调用正确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 (AMATrix LABoraty BMATrex LABoratoy CMATrix 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_代表虚数单位。(Aans BNaN CInf Dpi Ei Feps Gexp)4. 在MATLAB中,每一个变量都被认为是_B_(A矩阵 B向量 C标量),每一个元素都被看作_B_(A整数 B复数 C实数)。5.下列哪些是MATLAB预定义的变量名A D E。( Aeps Bexp Cabs DNaN Eans)6. 请指出下列变量名中,哪些是合法的 B E。(A. abcd-2 Babcd_2 C2_abcd Da变量 EABCD2)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_运算会产生非数数据。(A0/0 B/ C0×0 D0× E0-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 (Asym Bsyms Cfindsym)函数可自动识别独立自变量;其中 A (Ax By CX DY)是首选符号变量。 13.已知a=0:4. b=1:5,下面的运算表达式出错的为 C 。(Aa+b Ba./b Ca*b Da*b)14.2*pi*(0:10)/10指令执行后,产生的采样点个数为 C 个。(A9 B10 C11 D12)15.想查看工作空间中的全部变量,下面哪些指令可以实现 AC 。(Awho Bclass Cwhos Disa)16. 下列关于主函数的说法正确的有 B C D 。(A主函数必须与保存文件同名 B在指令窗或其它函数中可以直接调用 C在M函数文件中由第一个function引出D每个函数文件中都必须有主函数)17.在命令窗中键入_B_(Afig Bfigure Cclf Dfiguer),会得到一个空白的图形窗。18命令窗的输入行具有文字处理相似的编辑功能:_C_(ASpace BAlt CESC)键用来清除当前输入行,回到空白状态;_A_(A B C D)键可以调出上一行历史命令,_B_(A B C D)键调出下一行命令,在需要调出曾经键入过的命令、修改重新执行时,可大大提高效率。19在命令窗中键入指令r=(-8)(1/3),得到r的结果为_B_。(A-2.0000 + 0.0000i B1.0000 + 1.7321i C-1.0000 - 1.7321i D1.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. 数据可视化的一般步骤是什么?其中哪几步是必不可少的?答:包括:数据准备,选定图形窗及子图位置,调用绘图指令,设置轴的范围和坐标方格线,图形注释,着色、明暗、灯光、材质处理(三维图形)。其中数据准备和调用绘图指令是必不可少的。3.A=1,2;3,4; B=-1,-2;2,1;A.*Bans= -1 -46 4A*Bans= 3 0 5 -24. clear; D=reshape(1:9,3,3) D= 1 4 7 2 5 83 6 9X= diag(D)X=1 59四:分析综合1. clear; A=ones(3,3); A(4,5)=5A= 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 52. A=zeros(2,4);A(:)=1:8A= 1 3 5 7 2 4 6 8s=2 3 5;Sa=10 20 30;A(s)=SaA= 1 20 30 710 4 6 8A(:,2 3)= A= 1 710 85. A=1,2;3,4; B=-1,-2;2,1;S=3;S.*Aans = 3 6 9 12S*Bans = -3 -66 3A.*Bans = -1 -46 4A*Bans = 3 0 5 -2五 编程题目1、已知函数。(1)绘制在区间0,4上的曲线。要求函数曲线用蓝色实线,包络用红色虚线,采样间隔为/50。(2)在原图上用黄色点划线叠绘的图形解:(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 ;y1=sin(9*t);plot(t,y1,y-.)hold off2、设求定义域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 Y1Y2”;(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. 画出所表示的三维曲面。的取值范围是x=-8:0.5:8; %定义自变量x的一维刻度向量y=x; %定义自变量y的一维刻度向量X,Y=meshgrid(x,y); R=sqrt(X.2+Y.2);%计算中间变量Z=sin(R)./R;%计算相应的函数值mesh(X,Y,Z); %或用surf(X,Y,Z);画图 5. 设(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 onZ1=0.05*X-0.05*Y+0.1;surf(X,Y,Z1)hold off6. 绘制衰减振荡函数在区间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:') grid7. 在同一图上分别用红色实线和蓝色虚线绘制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分)六 根据程序添加注释1clear;clf; %清工作空间,清图形窗t=(pi*(0:1000)/1000)'y1=sin(t);y2=sin(10*t);subplot(1,2,1),plot(t,y1); %将当前图形窗分成1×2幅子图,在第1幅图上画y1axis(0,pi,-1,1)%控制坐标轴范围,横坐标0到,纵坐标-1到1subplot(1,2,2),plot(t,y2);%将当前图形窗分成1×2幅子图,在第2幅图上画y2axis(0,pi,-1,1)2clear;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同长后,相加