分别在同一matlab关闭图形窗口的不同子图绘制y1=sin(t)sin(7t)和y2=±sin(t)

当前位置: >>
2012MATLAB期末考试试卷汇总
MATLAB 期末考试试卷及其参考答案一、填空题 1、MATLAB 常用操作界面包括 、工作空间窗口、、 、内存数组编辑器、M 文件 编辑/调试器、帮助导航/浏览器、图形窗口等。 2、MATLAB 中 Inf 或 inf 表示 、NaN 或 nan 表示 、nargout 表示 。 3、MATLAB 中逗号主要用作 ;用作输入量与输入量之间的分隔符; 。 4、工作空间浏览器主要用于内存变量的 、 和 。 5、MATLAB 实现将全下标转换为单下标的指令为 、据单下标换算出全下标的指令为 。 6、二维数组的标识有 、 、“逻辑 1”标识。 二、简答题 1、简述 MATLAB 历史指令窗的主要作用。 2、简述空数组的功用。 3、简述 MATLAB 函数的基本结构。 4、简述绘制二维图形的一般步骤。 三、阅读程序并回答问题(每题 4 分,共 28 分) 1、写出下列指令运行结果。 A=zeros(2,4); A(:)=1:8; s=[2 3 5]; A(s) Sa=[10 20 30]' A(s)=Sa 2、写出下列指令运行结果。 A=reshape(1:16,2,8) reshape(A,4,4) s=[1 3 6 8 9 11 14 16]; A(s)=0 3、写出下列指令运行结果。 A=[1,2;3,4]; B=[-1,-2;2;1]; S=3; A.*B A*B S.*A S*B 4、下面的函数主要完成什么功能? function f=factor(n) if n&=1 f=1; else f=factor(n-1)*n; end 5、写出下列指令运行结果。 ch=?ABc123d4e56Fg9?; subch=ch(1:5) revch=ch(end:-1:1) k=find(ch&=?a?&ch&=?z?); ch(k)=ch(k)-(?a?-?A?); char(ch) 6、写出下列指令运行结果。 A(1,1)={'this is cell'}; A{1,2}={[1 2 3;4 5 6]}; A{2,1}=[1+2*i]; A{2,2}=A{1,2}{1}+(A{1,2}{1}(1,1)+A{1,2}{1}(2,2)); celldisp(A) 7、下面的程序完成功能是什么? t=0:pi/50:4* y0=exp(-t/3); y=exp(-t/3).*sin(3*t); plot(t,y,'-r',t,y0,':b',t,-y0,':b') xlabel(?\bf\it t?); ylabel(?\bf\it y?); 四、编程题(32 分) 1、1、在同一图上分别用红色实线和绿色虚线绘制 y1=sin(x)和 y2=cos(x)在区间[0,4*pi]的曲线, 并用星号*标出两条曲线的交点以及建立图例。(5 分)2、分别在同一图形窗的不同子图绘制 y=sin(t)sin(9t)和 y=sin(t)sin(9t)及其包络线。(4 分) 3、某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用 price 来表示): price&200 没有折扣 200≤price&500 3%折扣 500≤price&1000 5%折扣 1000≤price&2500 8%折扣 2500≤price&5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。(5 分) 4、编写程序实现 f(n)=f(n-1)+f(n-2)(f(1)=1 和 f(2)=2)函数。(6 分) 5、编写一个学生成绩管理的程序(12 分) A.构造一个学生结构,包括学生的学号,姓名,课程名称(限五门),考试成绩和平均值等域; (4 分) B.从键盘上,连续输入 N 个学生的情况,分别将这些学生的情况填入到相应的域,若域中没有值 即为空或 0 并计算平均成绩写入到平均值域。(4 分) C.根据平均值排序,并输出学生的姓名、学号和平均成绩。(4 分)参考答案一、填空题(每空 1 分,20 分) 1、MATLAB 常用操作界面包括命令窗口、工作空间窗口(浏览器)、 命令历史窗口、当前目录窗口、内存数组编辑器、M 文件编辑/调试器、 帮助导航/浏览器、图形窗口等。 2、MATLABInf 或 inf 表示无穷大、NaN 或 nan 表示不是一个数、nargout 表示函数输出宗量数目。 3、MATLAB 中逗号主要用作要显示计算结果的指令与其后指令的分隔; 用作输入量与输入量之间的分隔符;用作数组元素分隔符号。 4、工作空间浏览器主要用于内存变量的查阅、保存和编辑。 5、MATLAB 实现将全下标转换为单下标的指令为 Sub2ind、据单下标换算出全 下标的指令为 Ind2sub。 6、二维数组的标识有“全下标”标识、“单下标”标识、“逻辑 1”标识。 7、在一个元胞数组 A 中寻访第 2 行第 3 列元胞元素用 A(2,3);寻访数组第 2 行第 3 列元胞中的内容用 A{2,3}。 8、MATLAB 中 clf 用于清除图形窗、clc 用于清除指令窗中显示内容、clear 用于清除 MATLAB 工作空间中保存的变量。 二、简答题(每题 5 分,共 20 分) 1. 简述 MATLAB 历史指令窗的主要作用。 历史指令窗记录着用户在 MATLAB 指令窗中所输入过的所有指令。历史记录 包括:每次开启 MATLAB 的时间,每次开启 MATLAB 后在指令窗中运行过 的所有指令。应用功能有单行或多行指令的复制和运行、生成 M 文件等。 2、简述空数组的功用。 “空”数组的功用:在没有“空”数组参与的运算时,计算结果中的“空” 可以合理地解释“所得结果的含义”;运用“空”数组对其他非空数组赋值, 可以改变数组的大小,但不能改变数组的维数。 3、简述 MATLAB 函数的基本结构。 典型 M 函数文件的结构:函数申明(定义)行(Function declaration line)、 H1 行(The first help text line)、在线帮助文本(Help text)区、编写和修改记录、 函数体(Function body)。 4、简述绘制二维图形的一般步骤。 绘制二维图形的一般步骤为:曲线数据准备、选定图形窗及子图位置、调用二维曲线绘图指令、设 置轴的范围、坐标分格线、图形注释、图形的精细操作。 三、阅读程序并回答问题(每题 4 分,共 28 分) 1、写出下列指令运行结果。A=zeros(2,4); A(:)=1:8; s=[2 3 5]; A(s) Sa=[10 20 30]' A(s)=Sa ans = 2 3 5 Sa = 10 20 30 A = 1 20 30 7 10 4 6 82、写出下列指令运行结果。A=reshape(1:16,2,8) A = 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16reshape(A,4,4) ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16s=[1 3 6 8 9 11 14 16]; A(s)=0 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 03、写出下列指令运行结果。 A=[1,2;3,4]; B=[-1,-2;2,1]; S=3; A.*B A*B S.*A S*B ans = -1 -4 64 ans = 30 5 -2 ans = 36 9 12 ans = -3 -6 63 4、下面的函数主要完成什么功能? function f=factor(n) if n&=1 f=1; else f=factor(n-1)*n; end 利用函数的递归调用,求 n!。 5、写出下列指令运行结果。 ch=?ABc123d4e56Fg9?; subch=ch(1:5) revch=ch(end:-1:1) k=find(ch&=?a?&ch&=?z?); ch(k)=ch(k)-(?a?-?A?); char(ch) length(k) subch = ABc12 revch = 9gF65e4d321cBA ans = ABC123D4E56FG9 6、写出下列指令运行结果。 A(1,1)={'this is cell'}; A{1,2}={[1 2 3;4 5 6]}; A{2,1}=[1+2*i]; A{2,2}=A{1,2}{1}+(A{1,2}{1}(1,1)+A{1,2}{1}(2,2)); celldisp(A) A{1,1} = this is cell A{2,1} = 1.0000 + 2.0000i A{1,2}{1} = 123 456 A{2,2} = 789 10 11 12 7、在同一个图中绘制两个函数,这两个函数分别是: y=e(-t/3) y0=e(-t/3)*sin(3t) 其中 y 是用红色的细实线,而 y0 是用兰色的虚线绘制,t 的区间是(0:4?), t 的步长为?/50,t 轴和 y 轴分别用斜粗题指示,图中有网格表示。 四、编程题 1、答案 clf x=0:pi/200:2* y1=sin(x); y2=cos(x); zz=x(find(abs(y1-y2)&0.005)) z=min(zz) plot(x,y1,'r-',x,y2,'g-.') hold on plot(zz,sin(zz),'*') legend('sin','cos') 2、答案 t=(0:pi/100:pi)'; y1=sin(t)*[1,-1]; y2=sin(t).*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3);subplot(1,2,1) plot(t,y1,'r:',t,y2,'b',t3,y3,'bo') subplot(1,2,2) plot(t,y2,'b') axis([0,pi,-1,1])3、答案 price=input('请输入商品价格'); switch fix(price/100) case {0,1} %价格小于 200 rate=0; case {2,3,4} %价格大于等于 200 但小于 500 rate=3/100; case num2cell(5:9) %价格大于等于 500 但小于 1000 rate=5/100; case num2cell(10:24) %价格大于等于 1000 但小于 2500 rate=8/100; case num2cell(25:49) %价格大于等于 2500 但小于 5000 rate=10/100; otherwise %价格大于等于 5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格 4、答案 function f=fab(n) if (n==1) f = 1; elseif (n==2) f =2; else f = fab(n-1) + fab(n-2); end 5、答案 str1 = ''; str2 = ''; str3= ''; val = cell(5,2) a=zeros(5,1); ave = 0; student = struct('Name',str1,'No',str2,'Scores',val,'Ave',ave); n = input('please input students number:'); for i=1 : n str1 = input('Name:'); str2 = input('No.:'); %for k=1:2 % val(k,:) = input('Curriculums and Scores:'); % a(k,1)=val{k,2}; %end %val(1,:) = input('Curriculum:'); %val(:,2) = input('Scores:'); val = input('please input five Curriculums and Scores:'); for k=1:5 a(k,1)=val{k,2}; end student(i).Name = str1; student(i).No = str2; student(i).Scores = student(i).Ave = mean(a); endfor ii= 1:(length(student)-1) iptr = for jj=ii+1 : length(student) if (student(jj).Ave & student(iptr).Ave) iptr = end end if ii ~=iptr temp = student(ii); student(ii) =student(iptr); student(iptr) = end endfor ii=1 : length(student) if student(ii).Ave & 80 disp(student(ii).Name); disp(student(ii).Ave); end enddisp(['student name',blanks(6),'student no.',blanks(6),'student average']);disp(' ') for ii=1 : length(student) disp([student(ii).Name,blanks(20),student(ii).No,blanks(20),num2str(student(ii).Ave)]); end 一、填空题(每空 2 分,总共 30 分)1. 已知 A=[0 9 6;1 3 0];B=[1 4 3;1 5 0];写出下列各指令运行 的结果。 A & B 的运行结果 ans= A ./ B 的运行结果 ans= ; 。2. 产生 4 阶全 0 方阵的命令为 zeros(4) ; 产生 3 阶全 1 方阵的命 令为 ones(3) 。3. A=rand(2,5);b=size(A);c=length(A);则 b 和 c 的值分别为 和 [2,5],[5] 。4. 标点符号 分号 可以使命令行不显示运算结果, 百分号 用来表 示该行为注释行。5. 用 if 判断语句判断 80≥ x &60,在 MATLAB 中 if 语言后的判断 应写为 if x&=80&x&60 。 6. P, Q 分别是个多项式的系数矢量, P 对应的多项式的积分 求 (对应的常数项为 K) , 使用的命令是 polyint(P,K) ;求 P/Q 的解,商和余数分别保存在 k 和 r,使用的 命令是 [k,r]=deconv(P,Q) ;7. 为了使两个 plot 的图形在同一个坐标显示,可以使用 hold on 保持;可以使用 grid on 命令为图形添加网格。命令进行图形8. MATLAB 的工作空间中有三个变量 v1, v2, v3, 写出把它们保存到文件 my_data.mat 中的指令 save my_data ;写出把 my_data.mat 文件中的变量读取到 MATLAB 。工作空间内的指令load my_data二、选择题(每空 2 分,总共 20 分)1.下列哪个变量的定义是不合法的 (A) abcd-3A(B) xyz_3 (C) abcdef (D) x3yz2. 下列哪条指令是求矩阵的行列式的值C(A) inv (B) diag (C) det (D) eig3. 在循环结构中跳出循环,执行循环后面代码的命令为 (A) return (B) break (C) continueB(D) keyboard4. 清空 Matlab 工作空间内所有变量的指令是 (A) clc (B) cls (C) clear (D) clfC 5. 用 round 函数四舍五入对数组[2.48 6.39 3.93 8.52]取整,结果为 (A) [2 6 3 8] (B) [2 6 4 8] (C) [2 6 4 9]C(D) [3 7 4 9]6. 已知 a=2:2:8, b=2:5,下面的运算表达式中,出错的为 (A) a'*b (B) a .*b (C) a*b (D) a-bC7. 角度 x ? ?30 45 60? ,计算其正弦函数的运算为 D (A) SIN(deg2rad(x)) (B) SIN(x) (C) sin(x) (D) sin(deg2rad(x))8. 下面的程序执行后 array 的值为 for k=1:10 if k&6 else array(k) = end end (A) array = [1, 2, 3, 4, 5, 6] 10] (C) array =6( A )(B) array = [1, 2, 3, 4, 5, 6, 7, 8, 9,(D) array =10.9.i=2; a=2i; b=2*i; c=2*sqrt(-1); 程序执行后;a, b, c 的值分别是多少? (A)a=4, b=4, c=2.0000i (C) (B)a=4, b=2.0000i, c=2.0000i (C)a=2.0000i, b=4, c=2.0000i (D) a=2.0000i, b=2.0000i, c=2.0000i10. 求解方程 x4-4x3+12x-9 = 0 的所有解 (A)1.0, 1.7321, -1.7321 (B)1.0, 1.7321i, -1.7321i (C)1.0000i, 3.0000i, 1.7321, -1.7321 (D)-3.0000i, 3.0000i, 1.7321, -1.7321三、写出程序的执行结果或写出给定要求的指令(总共 35 分)1. 写出执行以下代码后C,D,E的值 (6分) A=[1,2,3;4:6;7:9]; C=[A;[10,11,12]], D=C(1:3,[2 3]) E=C(2,[1 2])2. 写出执行以下代码后,MATLAB命令窗口上显示的x矩阵的值 (5分)x=[0,1,0,2,0,3,0,4]; for k=1:8 if x(k)==0 x(k)=k; else x(k)=2*k+1; end end disp(x);3. 创建符号函数并求解,要求写出步骤和运行结果(7 分) (1)创建符号函数 f=ax2+bx+c (2)求 f=0 的解4. 求解以下线性方程组,要求写出程序代码和运行结果(5 分)2x1- 3x2+ x3+2x4=8 x1+3x2+ x4=6 x1- x2+ x3+8x4=1 7x1+ x2-2x3+2x4=55.绘制函数曲线,要求写出程序代码(12 分) (1)在区间[0:2π ]均匀的取 50 个点,构成向量π (2)在同一窗口绘制曲线 y1=sin(2*t-0.3); y2=3cos(t+0.5);要求 y1 曲线为红色点 划线,标记点为圆圈;y2 为蓝色虚线,标记点为星号四、使用 MATLAB 语言进行编程(15 分)打印出所有的水仙花数。所谓“水仙花数” ,是指一个三位数,其各位数字立方之和 等于该数本身。 一、填空题 1、 ans = 0 1 ans = 0 1.0000 2、 zeros(4) 3、 [ 2 5 ] 4、 ; 2.0 2.0000 NaN ones(3) [ 5 ] % 1 1 1 05、 if x&= 80 & x&60 6、 polyint(P,K) 7、 hold on 8、 save my_data [k,r]= deconv (P,Q) grid on Load my_data二、选择题 1、 A 2、 C 3、 B 4、 C 5、 C 6、 C 7、 D 8、 A 9、 C 10、 A三、写出程序的执行结果或写出给定要求的指令 1、 c = 0 + 2.0000i D = 2 5 8 E = 4 5 3 6 92、 1 5 3 9 5 13 7 173、 && syms a b c x && s = a*x^2 + b*x + && solve(s)ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]4、 && syms a b c x && syms x1 x2 x3 x4 && clear && syms x1 x2 x3 x4 && f = 2*x1 + 3*x2 + x3 + 2*x4 -8; && g = x1 + 3*x2 + x4 - 6; && h = x1 - x2 + x3 + 8*x4 - 1; && i = 7*x1 + x2 - 2*x3 + 2*x4 -5; && [x1,x2,x3,x4] = solve(f,g,h,i)x1 = 13/17x2 = 320/187 x3 = 212/187x4 = 19/1875、 t = linspace(0, 2*pi, 50); plot(t,y1,'r-o' ,t,y2,'b--*');四、使用 MATLAB 语言进行编程for k = 100:999 a = fix(k/100); b = rem(fix(k/10),10); c = rem(k,10); if a.^3 + b.^3 + c.^3 == k fprintf( “%u,\t\t”, k ) ; end end 西 安 电 子 科 技 大 学考试时间 90 分钟2009 年 MATLAB 语言试题题号 分数1.考试形式:闭卷;2.本试卷共 七 大题,满分 100 分;3.答案写在试卷上 班级 学号 姓名 任课教师一二三四五六七总分一、基本知识填空题(每空 1 分,共 20 分) 1. MATLAB 的通用命令中列出内存中的变量目录可用 用 命令;显示变量、阵列或文本时,可用 命令;清除工作空间中的变量时,可用 中的特定变量时,可用 和 命令。 命令;若对函数功能和用法不熟悉,可 命令;保存和恢复工作空间,或者工作空间2.3. 4. 5. 6. 7.在 MATLAB 图形系统中,如果需要给已经绘制好的图形加上栅格线,可以使用 命令, 如果需要在指定的坐标位置标注文本时使用的函数为 ,需要绘制多条曲线,保持当前图 形窗口可使用 命令。 用 MATLAB 绘制条形图时可使用 函数,绘制柱状图,用以表示数据值的分布情况时可 使用 函数。 MATLAB 中用于控制不定次重复循环语句为 ,若在循环执行过程中需要终止该循环时采 用的语句为 。 对于 MATLAB 中的多维阵列,在保持所有元素个数和内容不变的前提下可以使用 函数改 变其尺寸和维数;利用 函数可以定义单元阵列。 在 MATLAB 中,可用内部函数与工具箱函数产生矩阵,其中如果要产生单位阵可用 函数, 产生对角阵可用 函数,产生均匀分布的随机阵可用 函数。 在 MATLAB 中, 将含有小数的数值转换成字符串可用 命令, 在字符串中查找子字符串可用 命令。二、选择题(每题 4 分,共 20 分) 1. 设 A=[2 4 3; 5 3 1; 3 6 7],则 sum(A),length(A)和 size(A)的结果( ) A. [10 13 11] 9 [3 3] B. [9 9 16] 3 [3 3] C. [9 9 16] 9 [3 3] D. [10 13 11] 3 [3 3] 2. 下列关于脚本文件和函数文件的描述中不正确的是( ) A. 去掉函数文件第一行的定义行可转变成脚本文件; B. 函数文件可以在命令窗口直接运行; C. 脚本文件可以调用函数文件; D. 函数文件中的第一行必须以 function 开始; 3. 在 Command Window 窗口中分别输入下列命令,对应输出结果错误的是( A. x=[-3:2] x=[-3 -2 1 0 1 2] B. x=zeros(1,2);x&0 ans=[0 0] C. y=diag(eye(3),2).? y=[0 0] D. 3-2*rand(1,2) ans=[1.7]) 4.对于矩阵 B,统计其中大于 A 的元素个数,可以使用的语句是( A. length(B) - length(find(B&=A)) B. sum(sum(B&A)) C. length(sum(B&A)) D. sum(length(B&A)))5.已知 str1=?find?, str2=?fund?, str3=?I like you?,有:k1=sum(str1==str2), k2=sum(strrep(str1,?i?,?u?)==str2), k3=findstr(str3,?ke?), 则 k1,k2,k3 的结果分别为:( ) A. 3, 3, 5 B. 3, 4, 5 C. 4, 3, 5 D. 3, 4, 6三、程序填空(每空 2 分,共 12 分) 1. 编写 MATLAB 程序,用三阶多项式来拟合数据,在同一图形窗口中绘制拟合前和拟合后两条曲线, 并对图形坐标轴进行控制。程序如下: x=[1, 2, 3, 4, 5];y=[5.1, 6.2, 7.0, 8.2, 9.3]; %采用三阶多项式拟合 x2=1:0.1: 5; y2= ; %拟合后的曲线 figure(1) plot(x,y,?o?,x2,y2); %绘制曲线 m1 = max([y, y2]); m2 = min([y, y2]); ; %用 axis 调制坐标轴,横坐标在[0 6]之间,且完全显示图形 ; %加上标题“多项式曲线拟合” 2. 编写 MATLAB 程序,对于用户输入的向量或矩阵,计算其平均值: % 提示输入数据并保存到 x 中,命令行显示“请输入数据” y = reshape(x,1, prod(size(x))); m= ; % 计算均值 m 四、(8 分) 为解下列线性方程组,请写出 MALAB 语言程序。 4 x1 +2 x3 +3 x4 = 9 3 x2 +2 x3 + 3x4 = 8 2 x1 + x4 = 10 x3 -2 x2 + 3x4 =7五、(10 分) 利用 menu 函数输入选择参数 len,输入菜单的名称为“select an num” ,根据 len 的取值分别 给变量 x 赋不同的值。当 len=1 时,x 的值为的值为 4 行 3 列全 0 矩阵;当 len=2 时,x 的值为 3 行 4 列 全为 5 的矩阵;当 len=3 时,x 的值为 5 行 3 列均值为 0,方差为 1 的正态分布的随机矩阵;当 len=4 时, x 的值为字符串“not an array”; 当 len 为其它值时,则显示“Error”。要求使用 switch 函数。 六、(15 分)某混合信号有 2 个不同频率的确知信号,加上正态分布的随机噪声构成,噪声功率为 4,2 个确知信号分别为: s1 ? 10sin(2? f1n / f s ) 、 s2 ? 5sin(2? f 2 n / f s ) ,其中信号频率分别为 f1 ? 2 Hz、 f 2 ? 5 Hz, 采样频率为 f s ? 20 Hz,采样点 128 点,即 n=0,1,2,…,127。 编程完成以下内容: (1) 求出信号的频谱(用到的函数有 fft 和 abs) 。 (2) 以图形的方式比较信号波形和信号频谱,要求把图形窗口分成 2 个子窗口,分别画出:时域信号波 形(横坐标为 “Time”,纵坐标为 “amplitude”,标题为 “信号时域与频域波形”) 、信号频谱(横坐标为 “frequency(Hz)”,纵坐标为 “frequency spectral”) 。七、 (15 分)某宿舍有 4 名同学期末考试的成绩为下表所示: 姓名(name) 课程 英语(eng) 及成 物理(phy) 绩 数学(math) liwei 85 75 78 计算机(computer) 83 wangjun 83 84 92 87 liuzhi 80 69 77 82 zhanglin 90 75 81 78编程完成以下内容: (1) 基于表格内容构建结构阵列,结构名为 student。 对每名同学成绩按学分加权求出综合测评分。其中 eng(英语)、物理(phy)、math(数学)的学分分别为 3 4 5 2,综合测评分的计算公式如下: x ?n 1 n wi xi , xi 为课程成绩, wi 为相应的学分, w ? ? wi ,n 为成绩 ? w i ?1 i ?1个数。 (2) 基于表格内容构建单元阵列,单元阵列名为 student1,单位阵列中每一行保存一个学生的信息,包括 学生姓名和学生各门课成绩。通过访问单元阵列,计算每一个学生的平均分,将平均分作为一个新 的域,更新已经建立的单元阵列。 最终得到的单元阵列格式为: 姓名 成绩 平均分 学生 1 学生 2 学生 3 学生 4一、 基本知识填空题(每空 1 分,共 20 分) 1、whos help disp clear save load 2、grid on text hold on 3、bar(或 barh) hist 4、while(while end) break 5、reshape cell 6、eye diag rand 7、num2str findstr 二、 D 选择题(每题 4 分,共 20 分) B C B B三、程序填空题(每空 2 分,共 12 分)① p=polyfit(x,y,3) ② y2=polyval(p,x2) ③ axis([0 6 m2 m1]) ④ title(‘多项式曲线拟合’) ⑤ x = input(‘请输入数据 \n’) ⑤ m = mean(y) 或 x = input(‘请输入数据’)四、 分) (8 A=[4 0 2 3; 0 3 2 3; 2 0 0 1; 0 -2 1 3;]; b=[9 8 10 7]'; %3 分 %2 分 x=A\b; 或 x=inv(A)*b;%3 分另一种答案: A=[4 0 2 0;0 3 0 -2; 2 2 0 1; 3 3 1 3]; b=[9 8 10 7]; x=b/A;或 x=b*inv(A); 五、 (10 分) len= menu('select a num','1','2','3','4', '5'); switch len case 1 y=zeros(4,3); case 2 y=5.*ones(3,4); case 3 y=5+randn(5,3); case 4 y=?not an array?; otherwise disp(?Error?) end 六、 (15 分) f1=2; f2=5; fs=20; n=0:127; s1=10*sin(2*pi*f1*n/fs); s2=5*sin(2*pi*f2*n/fs); noise=2*randn(size(n)); s=s1+s2+ s_f= fft(s); m_f=abs(s_f); %1 分 %1 分 或 m_f=abs(fft(s)) %2 分 %2 分 %1 分 %1 分 %1 分 %2 分 %1 分 %1 分 %1 分 %1 分 %1 分 %1 分 %3 分 % switch 语句格式写对 2 分 %3 分 %2 分 %3 分f=(0:length(s_f)-1)*fs/length(s_f) 或 f=n*fs/length(n) figure(1); subplot(2,1,1); plot(n,s); title(?信号时域与频域波形?); xlabel(?Time?); ylabel(?amplitude?); subplot(2,1,2); plot(f,m_f); xlabel(?frequency(Hz)?); ylabel(?frequency spectral?); 七、(15 分) % 构建结构阵列 3 分,也可用赋值语句逐个赋值 student=struct('name',{'liwei' 'wangjun' 'liuzhi' 'zhanglin'},...%1 分 %1 分 %1 分 %1 分 %1 分'eng',{[85 75 78 83], 'phy' [83 84 92 87], 'math' [80 69 77 82], 'computer' [90 75 81 78] }); %加权求平均,%7 分 w=[3 4 5 2]; w=w/sum(w); student_num=length(student); syn_score=zeros(1,student_num); for i=1:student_num syn_score(i)=student(i).eng*w(1)+student(i).phy*w(2)... +student(i).math*w(3)+student(i).computer*w(4); end构建单元阵列%3 分student1 = {' liwei ', [85 75 78 83]; ' wangjun ', [83 84 92 87]; ' liuzhi ', [80 69 77 82]; 'zhanglin ', [90 75 81 78]}; for i=1: length(student1) student1{i,3} = mean(student1{i,2}); end %更新正确 2 分西 安 电 子 科 技 大 学考试时间 90 分钟 2009 年 MATLAB 语言试题题号 分数1.考试形式:闭卷;2.本试卷共 七 大题,满分 100 分;3。答案全部写在答题纸上。 班级 学号 姓名 任课教师一二三四五六七总分二、基本知识填空题(每空 1 分,共 20 分) 8. MATLAB 的通用命令中若对函数功能和用法不熟悉, 可用 命令; 显示变量、 阵列或文本时, 可用 命令;清除工作空间中的变量时,可用 命令;保存和恢复工作空间,或者工作 空间中的特定变量时,可用 和 命令。 9. MATLAB 系统提供了两个重要部件: 和 ,它们在系统和用户编程中,占据重 要的地位。 10. 在 MATLAB 中,可用内部函数与工具箱函数产生矩阵,其中如果要产生单位阵可用 产生全 0 阵可用 函数,产生全 1 阵可用 函数,产生对角阵可用 函数, 函数。11. 在 MATLAB 图形系统中,如果需要给已经绘制好的图形加上栅格线,可以使用 命令, 如果需要在指定的坐标位置标注文本时使用的函数为 。 12. 用 MATLAB 绘制极坐标中的图形时可以使用 函数, 绘制条形图时可使用 函 数,绘制柱状图,用以表示数据值的分布情况时可使用 函数。 13. MATLAB 中用于控制不定次重复循环语句为 ,若在循环执行过程中需要终止该循环时采 用的语句为 。 14. 对于 MATLAB 中的多维阵列,在保持所有元素个数和内容不变的前提下可以使用 变其尺寸和维数;利用 函数可以定义单元阵列。 二、选择题(每题 4 分,共 20 分) 6. 设 A=[1 2 3; 3 4 5; 5 6 7; 7 8 9],则 sum(A),length(A)和 size(A)的结果( ) A. [16 20 24] 3 [4 3] B. [6 12 18 24] 3 [3 4] C. [6 12 18 24] 4 [4 3] D. [16 20 24] 4 [4 3] 7. 设 X=[0:0.5*pi:pi], Y=cos(X)且 Z=sin(X),那么 Y.*Z, Y*Z?和 cat(1,Y,Z)的结果分别为( ) A. [0 0 0] 0 [1 0 -1; 0 1 0] B. [0 0 0] 0 [1 0 -1 0 1 0] C. [0 0 0] [0 1 0; 0 0 0; 0 -1 0] [1 0 -1; 0 1 0] D. [0 1 0; 0 0 0; 0 -1 0] [0 0 0] [1 0 -1 0 1 0] 8. 对于矩阵 A,统计其中大于 T 的元素个数,可以使用的语句是( A. length(A) - length(find(A&=T)) B. length(sum(A&T)) C. sum(sum(A&T)) D. sum(length(A&T)) ) 函数改9. 假设多维阵列 A=rand(5,5,4),下面对 A 进行各种不同的操作,其中错误的是( A. sin(A).*cos(A) B. A1(1) = A C. sum(A)+length(A) D. A1{2} = num2cell(A))10. 已 知 str1=?sum?, str2=?sun?, str3=?XiDian 123?, 有 : k1=sum(str1==str2), k2=sum(strrep(str1,?m?,?n?)==str2), k3=findstr(str3,?an?), 则 k1,k2,k3 的结果分别为:( ) A. 2, 2, 5B. 2, 3, 5C. 3, 2, 4D. 2, 3, 4三、程序填空(每空 3 分,共 15 分) 3. 编写 MATLAB 程序,在同一图形窗口中绘制 y1 和 y2 两条曲线,并对图形坐标轴进行控制。程序如 下: x = -3:0.1: 3; y1 = 2*x+5; y2 = x.^2-3*x; plot(x,y1); %绘制曲线 y1 ① ; %保持曲线 y1 plot(x,y2); %绘制曲线 y2 m1 = max([y1, y2]); m2 = min([y1, y2]); ② ; %用 axis 调制坐标轴,横坐标在[-3 3]之间,且完全显示图形 ③ 4. ; %加入图形注释,横坐标为“时间” ,纵坐标为“幅度”编写 MATLAB 程序,对于用户输入的向量或矩阵,计算其平均值和方差: ④ ; % 提示输入数据并保存到 x 中,命令行显示“请输入数据” y = reshape(x,1, prod(size(x))); m = mean(y); % 计算均值 m ⑤ ; % 计算方差 v四、(10 分) 为解下列线性方程组,请写出 MALAB 语言程序。 3 x1 + x2 + 5x4 = 2 6 x2 +7 x3 + 3x4 = 4 4 x2 +3 x3 = 7 2x1 - x2 + 2 x3 + 6x4 =8 五、(10 分) 利用 menu 函数和 switch 函数编写脚本文件。输入选择 ch,当 ch=1 时,产生[-1, 1]之间均 匀分布的随机数;ch=2 时,产生大小为 5x5 的对角阵,其中每个元素在[0, 1]之间均匀分布;当 ch=3 时, 产生均值为 0,方差为 1 的正态随机数;当 ch=4 时,产生均值为 5,方差为 4 的大小为 5x5 的正态随机 矩阵;当 ch=5 时,直接退出菜单。 六、(10 分) 某宿舍有 4 名同学,3 门课程的期末考试成绩如下表所示: 姓名(name) 成绩(score) liming 85 75 78 wanglei 83 84 92 liujun 80 69 77 zhangxiao 90 75 81要求编程完成以下内容: (3) 基于表格内容构建结构阵列,结构名为 student。通过访问结构阵列,计算每一个学生的平均分,将 平均分作为一个新的域,更新已经建立的结构阵列。 最终得到的结构阵列可表示为 student .name .score .mean (4) 基于表格内容建立二维单元阵列,单位阵列中每一行保存一个学生的信息。通过访问单元阵列,计 算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的单元阵列。 最终得到的单元阵列格式为: 姓名 成绩 平均分 学生 1 学生 2 学生 3 学生 4七、(15 分)某一过程中通过测量得到: t y 0 1.0 0.2 1.5 0.4 1.9 0.6 2.1 0.8 2.3 1.0 2.4 2.0 2.6 5.0 -4.0编程完成以下内容: (1) 分别采用三阶和四阶多项式对数据进行拟合; (提示:采用 polyfit 进行多项式拟合;调用格式为 p = polyfit(t,y,n),n 为多项式阶数,p 为得到的多项式系数) (2) 比较拟合效果,要求把图形窗口分成两个子窗口,子窗口 1 绘制出原始测量值和三阶多项式拟合后 的曲线,子窗口 2 绘制出原始测量值和四阶多项式拟合后的曲线; (3) 根据已知时刻点的测量值,计算两种拟合方法的均方误差(MSE) 。MSE ? 1 n ? ? ? ( yi ? yi )2 ,其中 yi 为上面表中的原始测量值, yi 为拟合后的估计值。 n i ?1四、 基本知识填空题(每空 1 分,共 20 分) 1、help disp clear save load 2、simulink toolboxes 3、eye zeros ones diag 4、grid on text 5、polar bar(或 barh) hist 6、while break 7、reshape cell 五、 选择题(每题 4 分,共 20 分) D A C B B 六、程序填空题(每空 3 分,共 15 分)① hold on ② axis([-3 3 m2 m1]) ③ xlabel(‘时间’); ylabel(‘幅度’); ④ x = input(‘请输入数据 \n’) ⑤ v = var(y) 或 或 x = input(‘请输入数据’)1/(length(y)-1) * (sum((y-m).^2))四、 (10 分) A=[3 1 0 5; 0 6 7 3; 0 4 3 0; 2 -1 2 6;]; b=[2 4 7 8]'; x=A\b; 或 x=inv(A)*b 或 x=pinv(A)*b; %3 分 %3 分 %4 分另一种答案: A=[3 0 0 2;1 6 4 -1; 0 7 3 2; 5 3 0 6]; b=[2 4 7 8]; x=b/A;或 x=b*inv(A); %3 分 %3 分 %4 分五 (10 分) ch = menu('select a num','1','2','3','4', '5'); switch ch case 1 y=2*rand-1; case 2 y=diag(rand(1,5)); case 3 y= case 4 y=5+2*randn(5,5); case 5 %1 分 %1 分 %1 分 %1 分 %1 分 %3 分% switch 语句格式写对 2 分 end六、 (10 分) % 构建结构阵列 3 分,也可用赋值语句逐个赋值 student=struct('name',{'liming','wanglei', 'liujun','zhangxiao'},... 'score',{[85 75 78], [83 84 92], [80 69 77], [90 75 81] }); for i=1: length(student) student(i).mean = mean(student(i).score); end %更新正确 2 分% 构建单元阵列 3 分,也可用赋值语句逐个赋值 student1 = {'liming', [85 75 78]; 'wanglei', [83 84 92]; 'liujun', [80 69 77]; ... 'zhangxiao', [90 75 81]}; for i=1: length(student1) student1{i,3} = mean(student1{i,2}); end %更新正确 2 分或者可由 struct 直接转换到 cell student1 = struct2cell(student); student1 = squeeze(student1); student1 = student1'; %4分 %删除单点维% 结果正确 1 分七、 (15 分)t = [0 0.2 0.4 0.6 0.8 1.0 2.0 5.0]; y = [1.0 1.5 1.9 2.1 2.3 2.4 2.6 -4.0]; p1 = polyfit(t,y,3); p2 = polyfit(t,y,4); x = [0:0.1:5]; y1 = polyval(p1,x); y2 = polyval(p2,x); %1分 %1分 %1分 %1分 %1分 subplot(1,2,1); plot(t,y,'o',x,y1); subplot(1,2,2); plot(t,y,'o',x,y2); i = int16(1 + t/0.1);% subplot 语句格式写对 1 分 % 也可使用 hold on 命令,正确画出第一个子图 2 分% 正确画出第二个子图 2 分 % or i=fix(t/0.1)+1;能找到正确的估计值位置 3 分 % 正确计算均方误差 1 分 % 正确计算均方误差 1 分mse1 = mean((y-y1(i)).^2); mse2 = mean((y-y2(i)).^2);西 安 电 子 科 技 大 学考试时间 90 分钟MATLAB 语言试题题号 分数1.考试形式:闭卷;2.本试卷共 六 大题,满分 100 分。 班级 学号 姓名 任课教师一二三四五六总分七、 选择题(每题 5 分,共 30 分) 1. 工作空间 workspace 中有变量 a,b,c,按如下步骤进行操作,(1)将变量 a 存成数据文件 adata.mat,(2) 清除工作区间所有变量,(3)再将数据文件调入工作区间,下面( )组命令是正确的: A B save adata a - C D load C 2. 在 Command Window 窗口中分别输入下列命令,对应输出结果正确的是( A. j=sqrt(-1) j=-1 B. x=ones(1,2);x&0 ans=1 C. y=diag(eye(2)).? y=[1 1] D. rand(1,3) ans=[0.1 0.6068] )3. 对应 MATLAB 提供的绘制平面曲线、 离散序列、 三维曲线、 三维网格曲线、 等高线图的函数为( A. plot, stem, mesh, plot3, surf B. plot, stem, plot3, mesh, contour C. plot, hist, mesh, plot3, contour D. plot, hist, plot3, meshc, contour 4. 下列对条件语句、分支语句、固定循环次数语句、不定循环次数语句关键字排序正确的是( A. B. C. D. ))5. 在 MATLAB 的 Editor 中输入下列语句:x=[1 3;2 4];y=norm(x(:,2));z=det(x);u=diag(x);v=polyval(u,1); 运行后,在 Command Window 中对应 y,z,u,v 的输出结果为( A.5 -2 [1;4] 5 B.5 2 [1;2] 3 C.4 2 [1;2] 3 D.4) -2 [1;4] 56. str1='Matlab is a usefull tool';str2=strtok(str1), strnum=length(str2), logvec=strcmpi(str2,'matlab'),k=findstr(str2,'a') 下列对变量 str2, strnum,logvec,k 值描述正确的是: A ?M? 1 0 [ ] B. ?Matlab? 6 0 [2 5] C. ?M? 1 1 [ ] D. ?Matlab? 6 1 [2 5]八、程序填空和改错,改错处用箭头标记(每空 5 分,共 20)抛物线的方程为 y ? ax 2 ? cx ,输入 c 后,绘制该曲线,寻找曲线的最小值和对应的 x 值。小明编写程 序如下: c=input('c='); a=1; x=-2:0.1:2; ; y=zeros(1,xnum); y=a*x^2+c*x;→ ; xlabel('x');ylabel('y'); [ymin,Imin]=min(y); xmin=x(ymin);→% (1)对变量 xnum 赋为数组 x 的个数 %(2)按照函数形式对 y 赋值 %(3)绘制曲线%(4)找到最小函数值对应的 x 值三、(10 分)A=[1 2 3;4 5 6;7 8 9],利用 menu 函数输入选择参数 OprNo,OprNo=1 时,将 A 按列向变为 9 ×1 的列矢量 ,记为 B; OprNo=2 时, A 的前两列的元素对应相加, 将 得到 C 为 3×1 的列矢量; OprNo=3 时,求 A 的对角元素之和(提示用 trace 函数)。 四、(10 分)牛顿迭代法是方程寻根的一种方法,考虑 f ( x) ? x 2 ? 2 x ? 3 ,方程 f ( x) ? 0 的牛顿迭代公式为2 xk ? 2 xk ? 3 f ( xk ) , k ? 0,1, 2,... 。首先,编牛顿迭代法函数,函数形式如下: xk ?1 ? xk ? ' 即 xk ?1 ? xk ? 2 xk ? 2 f ( xk )function y=NewtonEqu(x) %函数功能:按牛顿迭代公式定义函数 %输入参数:x,自变量, %输出参数:y,函数值 然后,给定初值 x0 ? 0 ,编写一循环主程序,当 | xk ?1 ? xk |? 10?4 或循环次数大于 100 时,停止迭代, 显示最终的方程根。 五、(15 分)某班为进行综合测评,需用 MATLAB 编程完成以下内容: (5) 构建如下的结构阵列(6) 对学生成绩按学分加权求出综合测评分,并从低到高排序 Gym(体育)、Eng(英语)、Math(数学)、物理(Phy)的学分分别为 1 2 3 2.5,综合测评分的计算公式如下:x?n 1 n wi xi , xi 为课程成绩, wi 为相应的学分, w ? ? wi ,n 为成绩个数。 ? w i ?1 i ?1(7) 按如下方式显示结果:(提示:num2str(x),可将数据 x 转换成字符串) Name Score ×× ×× ×× ×× ×× ××? 六、(15 分)下图所示的梯形电路中,若 U s ? 10sin(2? f 0 n / f s ) ,其中 U s ? 10 V 为电源电压幅值,信号频率 f 0 ? 2 Hz,采样频率为 f s ? 10 Hz,采样点 256 点,即 n=0,1,2,…,255。编程实现:? (1) 求 U ab ? (2) 在 b 点接频谱分析仪观察该点电压频谱,用 MATLAB 仿真,分图绘制正弦电压 U b 的波形和频谱。提示,用到的函数有 fft,subplot 建模:此电路中设各节点电压幅值为 U a 、 U b 将各支路电流用这些电压来表示I1 ? Us ?Ua U U ? Ub U Ub I 2 ? a I3 ? a I 4 ? b I5 ? R4 ? R5 R1 ? R2 R7 R3 R6对 a 点 和 b 点 列 出 节 点 电 流 方 程 : I1 ? I 2 ? I 3 , I 3 ? I 4 ? I 5 , 将 电 流 表 达 式 代 入 , 可 得? 1 Us 1 1 ? 1 ? ? ? ?U a ? U b ? R3 R1 ? R2 ? R3 R7 R1 ? R2 ? ? 1 1 1 1 ? Ua ? ? ? ? ?U b ? 0 R3 ? R3 R6 R4 ? R5 ??U a ? ? a ,可写成矩阵方程 A ? ? ? ? 11 ?U b ? ? a21 ? Us ? a12 ? ?U a ? ? ? ? ?U ? ? ? R1 ? R2 ? a22 ? ? b ? ? 0 ? ? ?MATLAB 语言 2007 年笔试考试答案九、选择题(每题 5 分,共 30 分) B B A D1、A C十、程序填空和改错(每空 5 分,共 20)抛物线的方程为 y ? ax 2 ? cx ,输入 c 后,绘制该曲线,寻找曲线的最小值和对应的 x 值。小明编写程 序如下: c=input('c='); a=1; x=-2:0.1:2; xnum=length(x) or xnum=size(x,2); y=zeros(1,xnum); y=a*x^2+c*x;→ plot(x,y) xlabel('x');ylabel('y'); [ymin,Imin]=min(y); xmin=x(ymin);→ xmin=x(Imin); %(4)找到最小函数值对应的 x 值 %(3)绘制曲线 y=a*x.^2+c*x; %(2)按照函数形式对 y 赋值 %(1)对变量 xnum 赋为数组 x 的个数 三、 A=[1 2 3;4 5 6;7 8 9]; OprNo=menu('OprSel','1','2','3'); %生成菜单,3 分,标题可任意取名 switch OprNo %也可用 if esleif endcase 1 B=reshape(A,prod(size(A)),1) %2 分 case 2 C=A(:,1)+A(:,2) case 3 D=trace(A) otherwise error('无效操作'); end %不作要求 %2 分 %2 分四、 function y=NewtonEqu(x) y=x-(x^2+2*x-3)/(2*x+2); %函数定义,2 分 x0=0; x1=NewtonEqu(x0); err=1e-4 k=1; xrec=[x0 x1]; while and(abs(x1-x0)&err,k&=100) %使用不定循环,4 分,条件正确 2 分 %或者使用固定 100 次的 for 循环,满足条件就 break 退出 x0=x1; x1=NewtonEqu(x0); k=k+1; %循环条件更新 2 分, xrec=[xrec x1]; end k x1%记录每次迭代的 x 不作要求五、 %构建结构阵列,5 分,也可用赋值语句逐个赋值 Student=struct('Name',{'xiaoming' 'xiaohong' 'xiaojun'},... 'Gym',{85 75 95},'Eng',{90 95 80},'Phy',{93 80 85},'Math',{88 90 70}); %加权求平均,并排序,7 分 w=[1 2 3 2.5]; w=w/sum(w); StuNum=length(Student); SynScore=zeros(1,StuNum); for i=1:StuNum SynScore(i)=Student(i).Gym*w(1)+Student(i).Eng*w(2)... +Student(i).Phy*w(3)+Student(i).Math*w(4); end [SynScore,I]=sort(SynScore);%从小到大排序 %显示结果,3 分 disp(['Name',' for i=1:StuNum disp([Student(I(i)).Name,' ',num2str(SynScore(i))]); end ','Score']);%使用 sprintf 控制格式也可六、 %输入题设条件,3 分 Us=10; f0=2; fs=10; snap_num=256; R1=2;R2=4;R3=4;R4=4;R5=2;R6=12;R7=12; %构建 AU=b 矩阵方程,5 分 a11=1/R3+1/R7+1/(R1+R2);a12=-1/R3; a21=1/R3;a22=-1/R3-1/(R4+R5)-1/R6; A=[a11 a12;a21 a22]; b=[Us/(R1+R2);0]; %求 Uab 以及写出 Ub 正弦电压形式,3 分 U=A\b; Uab=U(1)-U(2); Uab Ub=U(2); Ub_sin=Ub*sin(2*pi*f0*[0:snap_num-1]/fs); %作 FFT,绘制分图,4 分,不要求学生写出时间序列和频率序列 fseq=[0:snap_num-1]*fs/snap_ subplot(2,1,1);plot([0:snap_num-1],Ub_sin); xlabel('t(s)');ylabel('Uc(V)') subplot(2,1,2);plot(fseq,abs(fft(Ub_sin))); xlabel('f(Hz)');ylabel('Frequency Magnitude');
更多搜索:
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 matlab关闭图形窗口 的文章

 

随机推荐