2014年春季学期MATLAB 课程考查题一.必答题 (80分)1.如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有何区别?(2)答:方法一:在MATLAB命令窗口中输入editpath或pathtool命令或通过【File】/【SetPath】菜单,进入“设置搜索路径”对话框,通过该对话框编辑搜索路径。
方法二:在命令窗口执行“path(path,…D:\Study ‟)”,然后通过“设置搜索路径”对话查看“D:\Study”是否在搜索路径中。
方法三:在命令窗口执行“addpath D:\Study- end”,将新的目录加到整个搜索路径的末尾。
如果将end改为begin,可以将新的目录加到整个搜索路径的开始。
区别:当前文件目录是正在运行的文件的目录,显示文件及文件夹的详细信息,且只有将文件设置为当前目录才能直接调用。
搜索路径中的文件可以来自多个不同目录,在调用时不用将其都设置为当前目录,为同时调用多个文件提供方便。
2.创建符号变量和符号表达式有哪几种方法?(4)答:定义符号变量:方法一:sym函数,可以定义单个符号变量,调用格式为:符号量名=sym('符号字符串');方法二,syms函数,定义多个符号变量,调用格式:syms 符号变量名1 符号变量名2 符号变量名3 符号变量名4 。
空格隔开。
定义符号表达式:方法一:用单引号定义符号表达式;方法二:用sym函数定义符号表达式;方法三:用已经定义好的符号变量组成符号表达式;3.GUIDE提供哪些常用的控件工具,各有什么功能?(5分)答:一、控件风格和外观(1)BackgroundColor:设置控件背景颜色,使用[R G B]或颜色定义。
(2)CData:在控件上显示的真彩色图像,使用矩阵表示。
(3)ForegroundColor:文本颜色。
(4)String属性:控件上的文本,以及列表框和弹出菜单的选项。
(5)Visible:控件是否可见。
二、对象的常规信息(1)Enable属性:表示此控件的使能状态,设置为on”,表示可选,为“off”时则表示不可选。
(2)Style:控件对象类型。
(3)Tag:控件表示(用户定义)。
(4)TooltipString属性:提示信息显示。
当鼠标指针位于此控件上时,显示提示信息。
(5)UserData:用户指定数据。
(6)Position:控件对象的尺寸和位置。
(7)Units:设置控件的位置及大小的单位(8)有关字体的属性,如 FontAngle, FontName等。
三、控件回调函数的执行(1)BusyAction:处理回调函数的中断。
有两种选项:即Cancel:取消中断事件,queue:排队(默认设置)。
(2)ButtonDownFcn属性:按钮按下时的处理函数。
(3)CallBack属性:是连接程序界面整个程序系统的实质性功能的纽带。
该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值。
(4)CreateFcn:在对象产生过程中执行的回调函数。
(5)DeleteFcn:删除对象过程中执行的回调函数。
(6)Interruptible属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。
四、控件当前状态信息(1)ListboxTop:在列表框中显示的最顶层的字符串的索引。
(2)Max:最大值。
(3)Min:最小值。
(4)Value:控件的当前值。
4. 建立不同数据类型的变量:包括双精度的数值型(numeric)、符号型(sym)、结构体(structure)、单元型(cell)、字符串型(char),函数句柄(function handle)、逻辑型(logical ),并且采用whos 列出各变量名,变量的数组维数,占用字节数,变量的类别。
(4分)答: pp=3.14;b=sym('sdlfkjj');d={[],[1];'cv',linspace(1,5,5)}; e='e'; fhandle=@sin;g = rand(5); g(g>0)=0; whosName Size Bytes Class Attributespp 1x1 8 double b 1x1 62 sym d 2x2 320 cell e 1x6 12 char fhandle 1x1 16 function_handle g 5x5 200 double5.求⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=728365219a 矩阵的秩,迹,特征值和特征向量,并且对矩阵进行LU 分解、QR 分解及Chollesky 分解(3分)。
答:>> a=[9 1 2;5 6 3;8 2 7];z=rank(a)j=trace(a)[c d]=eig(a)[l u]=lu(a)[q r]=qr(a)[rr p]=chol(a)z =3j =22c =-0.4330 -0.2543 -0.1744-0.5657 0.9660 -0.6091-0.7018 0.0472 0.7736d =13.5482 0 00 4.8303 00 0 3.6216l =1.0000 0 00.5556 1.0000 00.8889 0.2041 1.0000u =9.0000 1.0000 2.00000 5.4444 1.88890 0 4.8367q =-0.6903 0.3969 -0.6050 -0.3835 -0.9097 -0.1592 -0.6136 0.1221 0.7801 r =-13.0384 -4.2183 -6.8260 0 -4.8172 -1.0807 0 0 3.7733 rr =3.0000 0.3333 0.6667 0 2.4267 1.1447 0 0 2.2903 p = 06. 执行矩阵A 和B⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321,136782078451220124B A 下列的运算:A+5*cos(B)、A.*B 、 A*B 、A./B 、B.\A 、A/B, B\A ,分别解释数组运算和矩阵运算的区别。
(4分)答:>> A=[4 12 20;12 45 78;20 78 136]; B=[1 2 3;4 5 6;7 8 9]; A+5*cos(B) A.*B A*B A./B B.\A A/BB\Aans =6.7015 9.9193 15.05008.7318 46.4183 82.800923.7695 77.2725 131.4443ans =4 24 6048 225 468140 624 1224ans =192 228 264738 873 10081284 1518 1752ans =4.0000 6.0000 6.66673.0000 9.0000 13.00002.8571 9.7500 15.1111ans =4.0000 6.0000 6.66673.0000 9.0000 13.00002.8571 9.7500 15.1111Warning: Matrix is singular to working precision.ans =NaN -Inf InfNaN NaN NaNNaN -Inf InfWarning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 1.541976e-018. ans =11.3333 24.5000 65.6667-18.6667 -28.0000 -93.333310.0000 14.5000 47.0000区别:一维数组相当于向量,二维数组相当于矩阵.所以矩阵是数组的子集●数组的运算是指数组对应元素之间的运算,也称点运算;●矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的;●矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应元素的运算。
7.求半径为r的圆的面积和周长,分别采用脚本文件和函数文件进行编写, r值由input指令从键盘给出,数据的输出采用disp指令;并且说明脚本式文件和函数文件的特点。
(5分)答:脚本文件:r=input('Please Input r: \n');A=pi*r^2;s=2*pi*r;disp(A);disp(s)Please Input r:450.265525.1327函数:r=input('Please Input r: \n');[a s]=zm(r);disp(a);disp(s);Please Input r: 450.2655 25.1327函数文件:function[a s]=zm(r)a=r^2*pi; s=2*pi*r; end区别:8. 级数求和:641111111n(1)261263*(631)64*(641)n ss n ===++++++++∑(1) 分别用 for 和while 循环结构编写程序求和,并且说明for 和while 区别;答:for 循环:>> ss=0; for k=1:64ss=ss+1/(k*(k+1)); end ss ss =脚本式M 文件函数式M 文件不接受输入参数,没有返回值。
可以接受输入参数,可以有返回值。
基于matlab 基本工作空间中的数据进行操作,存储在工作空间,属于全局变量。
默认时,文件中参数的作用范围只限于函数临时工作空间内部,属于局部变量。
自动完成需要花费很多时间的多步操作时使用。
扩展MATLAB 语言功能时使用。
0.9846while循环:>> ss=0;k=1;while k<65ss=ss+1/(k*(k+1));k=k+1;endssss =0.9846区别:●for循环语句一般适用于已知到循环次数,而不知道循环运算目标的问题;●while循环语句则一般适用于已知循环运算目标,而循环次数未知的问题;●为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免 for循环的使用。
(2) 分别采用sum和symsum求和。
(5分)答:sum求和:n=1:64;s=1./(n.*(n+1));sum(s)ans =0.9846symsum求和:ss=sym('1/(n*(n+1))');s=symsum(ss,1,64)s =64/659. 表1给出x0,y0的一组数据,(1)分别采用3阶和11阶多项式拟合表1数据,并且分析是不是阶数越高拟合效果越好;x0=0:0.1:1;y0=[-0.447 1.978 3.11 5.25 5.02 4.66 4.01 4.58 3.45 5.35 9.22];x=0:0.001:1;p1=polyfit(x0,y0,3);y1=polyval(p1,x);p2=polyfit(x0,y0,11);y2=polyval(p2,x);plot(x0,y0, 'p');hold on;plot(x,y1,'-');plot(x,y2,'--');z=0:0.25:1;y3=interp1(x0,y0,z,'spline');plot(z,y3,':')xlabel('x0');ylabel('y0');legend('原数据','3阶多项式拟合','11阶多项式拟合','3次样条插值');可见,插值次数太高会使得波动太大。