第一套
华东交通大学2015-2016学年第一学期Matlab期末考试
一、填空题(4*6=24分)
1、在MATLAB命令窗口中的“>>”标志为MATLAB的命令行提示符,“│”标志为输入提示符。
2、符号表达式sin(2*a+t)+m 中独立的符号变量为_t_。
3、在通常情况下,左除x=a\\b是 的解,右除x=b/a是 的解,一般情况下,。
4、为了使两个plot的图形在同一个坐标显示,可以使用___hold on__命令进行图形保持;可以使用_grid on__命令为图形添加网格。
5、倘若要是对x进行赋值,从5到25,间隔是0.1,为x=5:0.1:25 ;倘若要是对x进行赋值,从2到20,中间间隔100个点,为x=linspace(2,20,100) 6、A=[1,2;3,4];B=[1,0;0,1]; A*B=[1 2;3 4] _ , A.*B=_[1 0;0 4]_;
3. a*x=b , x*a=b , a\\b ,b/a;
二、选择题(4*6=24分)
7、如果x=1: 2 : 8,则x(1)和x(4)分别是(B)
A.1,8 B.1, 7 C.2, 8 D.2, 7
8、 运行如下程序后,输入9回车,命令窗口(command windows)显示的
结果为(A)
c=input('请输入一个字符','s'); if c>='A' & c<='Z'
disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>='a'& c<='z'
disp(setstr(abs(c)- abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end
A. 9 B. 8 C. 7 D. 6 9、MATLAB表达式2*2^3^2的结果是(A) A.128 B.4096 C. 262144 D.256 10、在循环结构中跳出循环,执行循环后面代码的命令为(B ) (A) return (B) break (C) continue (D) keyboard 11、在图形指定位置加标注命令是( C)
A. title(x,y,?y=sin(x)?); B. xlabel(x,y,?y=sin(x)?); C. text(x,y,?y=sin(x)?); D. legend(x,y,?y=sin(x)?); 12、下列哪个变量的定义是不合法的(A)。
(A) abcd-3 (B) xyz_3 (C) abcdef (D) x3yz
三、程序题(52分)
13(10分)、在同一窗口绘制6个子图,已知t=0.1:0.1:2*pi,每个子图分别绘制(其中y1=sin(t),y2=cos(2t),y3=sin(t)+cos(t),y4=3t, y5=2ln(t),y6=et);
答案13.t=0.1:0.1:2*pi;
subplot(2,3,1) y1=sin(t); plot(t,y1) title('y1=sin(t)') subplot(2,3,2) y2=cos(2*t); plot(t,y2) title('y2=cos(2t)') subplot(2,3,3) y3=sin(t)+cos(t); plot(t,y3) title('y3=sin(t)+cos(t)')
subplot(2,3,4) y4=3*t; plot(t,y4) title('y4=3t')
subplot(2,3,5) y5=2*log(t); plot(t,y5) title('y5=2ln(t)') subplot(2,3,6) y6=exp(t); plot(t,y6) title('y6=e^t')
14(10分)、某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣
输入所售商品的价格,求其实际销售价格。 答案14.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) %输出商品实际销售价格
15(10分)、在同一图形窗口中按照x=0.1的步长间隔分别绘制曲线y1=,0x;y1=sin(x)+cos(x),1≤x≤2。要求y1曲线为红色虚线,数据点用圆圈标识;y2
曲线为蓝色点划线;给出图例;标记图名为y1,y2。
答案15.x1=0:0.1:1;
y1=x1.^2.*exp(-x1); x2=1:0.1:2; y2=sin(x2)+cos(x2);
plot(x1,y1,'r--o',x2,y2,'b-.') legend('y1','y2') title('y1,y2')
16(10分)、写出执行以下代码后C,D,E的值
A=[1,2,3;4:6;7:9];
C=[A;[10,11,12]],
D=C(1:3,[2 3]) E=C(2,[1 2])
16.
C =
1 2 3
4 5 6
7 8 9 10 11 12
D =
2 3
5 6 8 9
E =
4 5
17(12分)、 已知系统函数为
试画出零极点分布图,并求系统的冲激响应h(t)和频率响应H(jw),并判断系统是否稳定。
17.已知系统函数H(s),求系统的冲激响应h(t)和频率响应H(jw),可调用
impulse函数和freqs函数。 num=[1];
den=[1 2 2 1]; sys=tf(num,den); poles=roots(den)
figure(1);pzmap(sys); t=0:0.02:10;
h=impulse(num,den,t); figure(2);plot(t,h)
title('Impulse Respone') [H,w]=freqs(num,den); figure(3);plot(w,abs(H)) xlabel('\\omega')
title('Magnitude Respone')
第二套
Matlab模拟试卷
一、填空题(每空2分,总分20)。
1.MATLAB常用操作界面包括命令窗口、工作空间窗口(浏览器)、命令历史窗口、当前目录窗口、内存数组编辑器、M文件编辑/调试器、帮助导航/浏览器、图形窗口等。
2.MATLAB中逗号主要用作要显示计算结果的指令与其后指令的分隔;用作输入量与输入量之间的分隔符;用作数组元素分隔符号。 3.工作空间浏览器主要用于内存变量的查阅、保存和编辑。 4.MATLAB实现将全下标转换为单下标的指令为Sub2ind、据单下标换算出全下标的指令为Ind2sub。
5.二维数组的标识有“全下标”标识、“单下标”标识、“逻辑1”标识。 二、选择题(每空2分,总共20分)
1.下列哪个变量的定义是不合法的 ( A )
(A) abcd-3 (B) xyz_3 (C) abcdef (D) x3yz
2. 下列哪条指令是求矩阵的行列式的值( C ) (A) inv (B) diag (C) det (D) eig
3. 在循环结构中跳出循环,执行循环后面代码的命令为(B) (A) return (B) break (C) continue (D) keyboard
4. 清空Matlab工作空间内所有变量的指令是(C ) (A) clc (B) cls (C) clear (D) clf
5. 用round函数四舍五入对数组[2.48 6.39 3.93 8.52]取整,结果为( C )
(A) [2 6 3 8] (B) [2 6 4 8] (C) [2 6 4 9] (D) [3 7 4 9]
6. 已知a=2:2:8, b=2:5,下面的运算表达式中,出错的为( C )
(A) a'*b (B) a .*b (C) a*b (D) a-b
7. 角度x??304560?,计算其正弦函数的运算为(D )
(A) SIN(deg2rad(x)) (B) SIN(x) (C) sin(x) (D) sin(deg2rad(x))
8. 下面的程序执行后array的值为 ( A) for k=1:10 if k>6 break; else
array(k) = k; end end
(A) array = [1, 2, 3, 4, 5, 6] (B) array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(C) array =6 (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.0000i
10. 求解方程x4-4x3+12x-9 = 0 的所有解( A) (A)1.0000, 3.0000, 1.7321, -1.7321 (B)1.0000, 3.0000, 1.7321i, -1.7321i (C)1.0000i, 3.0000i, 1.7321, -1.7321 (D)-3.0000i, 3.0000i, 1.7321, -1.7321
三、阅读程序并回答问题(每题5分,共20分) 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 8
2、写出下列指令运行结果。 A=reshape(1:16,2,8) reshape(A,4,4)
s=[1 3 6 8 9 11 14 16]; A(s)=0
答案:A=reshape(1:16,2,8) A =
1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16
reshape(A,4,4) ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
s=[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 0
3、写出下列指令运行结果。
A=[1,2;3,4]; B=[-1,-2;2;1]; S=3;
A.*B A*B S.*A S*B
答案: ans = -1 -4 6 4 ans = 3 0 5 -2 ans = 3 6 9 12 ans = -3 -6 6 3
4、下面的函数主要完成什么功能? function f=factor(n)
if n<=1 f=1;
else
f=factor(n-1)*n;
End
答:利用函数的递归调用,求n!。 四、程序填空(每空3分,共15分)
1. 编写MATLAB程序,在同一图形窗口中绘制y1和y2两条曲线,并对图形坐
标轴进行控制。程序如下: x = -3:0.1: 3;
y1 = 2*x+5; y2 = x.^2-3*x; plot(x,y1); %绘制曲线y1 ①; %保持曲线y1① hold on plot(x,y2); %绘制曲线y2
m1 = max([y1, y2]); m2 = min([y1, y2]);
②; %用axis调制坐标轴,横坐标在[-3 3]之间,且完全显示图形 ③; %加入图形注释,横坐标为“时间”,纵坐标为“幅度”
2. 编写MATLAB程序,对于用户输入的向量或矩阵,计算其平均值和方差:
④; % 提示输入数据并保存到x中,命令行显示“请输入数据” y = reshape(x,1,prod(size(x))); m = mean(y); % 计算均值m ⑤; % 计算方差v ① hold on
② axis([-3 3 m2 m1])
③ xlabel(‘时间’); ylabel(‘幅度’);
④ x = input(‘请输入数据 \\n’) 或 x = input(‘请输入数据’) ⑤ v = var(y)或 1/(length(y)-1) * (sum((y-m).^2))
五、编程题(40分)
1、分别在同一图形窗的不同子图绘制y=sin(t)sin(9t)和y=sin(t)sin(9t)及其包络线。(5分)
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])
2、编写程序实现f(n)=f(n-1)+f(n-2)(f(1)=1和f(2)=2)函数。(5分) function f=fab(n) if (n==1) f = 1;
elseif (n==2) f =2; else
f = fab(n-1) + fab(n-2);
End
3、求解以下线性方程组,要求写出程序代码和运行结果(5分)
2x1-3x2+x3+2x4=8 x1+3x2+x4=6 x1-x2+x3+8x4=1 7x1+x2-2x3+2x4=5 >> 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/17 x2 = 320/187 x3 = 212/187 x4 = 19/187
4、打印出所有的水仙花数。所谓“水仙花数”,是指一个三位数,其各位数字立方之和等于该数本身。(10分) 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
第三套
MATLAB试卷
一、填空题(每题2分,共10题,共20分,错一个得1分,错2个得0分)
1.MATLAB命令窗口中可用 命令清除工作区中的变量;用命令清除命令窗口中的内容。
2.MATLAB中的运算包括、、。 3.MATLAB中的M文件有、。
4.MATLAB中的程序控制结构包括、、。
5.已知矩阵A[1 2 3;4 5 6;7 8 9],A(6)A(1,3)。
6.MATLAB中用函数完成矩阵的求逆运算,用函数求矩阵的行列式。
7.在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形, 可以使用 函数。
8.MATLAB提供了函数和函数来绘制三维曲面图。 9.用if语句判断60≤x≤80,在MATLAB中if语言后面的判断应写为 。 10.为了使两个plot的图形在同一坐标显示,可以使用命令进行图形保持,可以使用命令为图形添加网格。
二、选择题(每题2分,共10题,共20分) 1.下列哪个变量的定义是不合法的
(A) abcd-3 (B) xyz_3 (C) abcdef (D) x3yz 2.在循环结构中跳出循环,执行循环后面代码的命令为
(A) return (B) break (C) continue (D) keyboard 3、下列变量名中是合法的。
(A) char_1 ; (B) x*y ; (C) x\\y ; (D) end 4. 如果x=1:-1:-8,则x(1)和x(5)分别是
A.-1,-3 B.-1,-7 C.-1,-6 D.1,-3
5. 在MATLAB中下列数值的表示不正确的是 A.+25 B.1.3e-5 C.4-3*e^2 D.3-2*pi
6. 用round函数四舍五入对数组[2.48 6.39 3.93 8.52]取整,结果为 (A) [2 6 3 8] (B) [2 6 4 8] (C) [2 6 4 9] (D) [3 7 4 9] 7.下列哪条指令是求矩阵的行列式的值
(A) inv (B) diag (C) det (D) eig 8. 在图形指定位置加标注命令是
A. title(x,y,’y=sin(x)’); B. xlabel(x,y,’y=sin(x)’); C. text(x,y,’y=sin(x)’); D. legend(x,y,’y=sin(x)’); 9.i=2; a=2i; b=2*i; c=2*sqrt(-1); 程序执行后;a, b, c的值分别 (A)a=4, b=4, c=2.0000i
(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.0000i
10、在循环结构中跳出循环,但继续下次循环的命令为
(A) return; (B) break ; (C) continue ; (D) keyboard
三、简答题(每题7.5分,共4题,共30分) 1.A = [1 2; 3 4]; B = [1 2; 1 4]; 写出下面几条指令的运行结果: C = A*B D = A+B E = A.*B
2.在MATLAB窗口中,用哪两种方法启动Simulink?
3.判断下列一段程序的错误,并进行改正。 x=-2:0.2:2; y=x.^2; plot(x,y)
str1 = num2str(min(x));% 数字转化为字符串 str2 = num2str(max(x));% 数字转化为字符串 out = [Value of f from 'str1' to 'str2']; xlabel(out);
4.一个3位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出100-999之间的全部水仙花数。请补全程序中所空缺的部分。 For m=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10); m3=rem(m,10);
If m==( ) disp(m) end end
四、编程题(每小题15分,共2题,共30分)
1.编写MATALAB程序,完成下列任务(将程序保存为test04.m文件): (1)在区间 [0,4*pi]上均匀地取20个点构成向量 ;
(2)分别计算函数y1=sin(t) 与y2=2cos(2t) 在向量 t处的函数值;
(3)在同一图形窗口绘制曲线y1=sin(t) 与y2=2cos(2t) ,要求 y1曲线为黑色点画线,y2 曲线为红色虚线圆圈;并在图中恰当位置标注两条曲线的图例;给图形加上标题“y1 and y2”。
2、Fibonacci数列的各元素为:1、1、2、3、5、8、??,满足以下关系
F1=1,F2=1,Fn=Fn-1+Fn-2 用while和for两种方法实现。
答案
一、填空题 1 clear clc
2 算术运算 关系运算 逻辑运算 3命令文件 函数文件
4顺序结构 循环结构 选择结构 5. 8 3 6.Inv det 7.plotyy 8.mesh surf
9. If x<=80&>=60
10.hold on grid on 二、选择题
1-5 ABADB 6-10 CCCCC 三、简答题
1.C=3 10 D=2 4 E=1 4
7 22 4 8 3 16 2.在MATLAB命令窗口中输入“simulink”再回车,或者单击工具栏中的SIMULINK图标
3.out = ['Value of f from ' str1 ' to ' str2]; 或out = ['Value of f from str1 to str2’]; 4.m1*m1*m1+m2*m2*m2+m3*m3*m3 四、编程题 1.程序如下:
(1)t=linspace(0,4*pi,20); (2)y1=sin(t);
y2=2*cos(2*t);
(3)plot(t,y1,'k-.');
text(1.2,sin(1.2),'y1\\leftarrow','FontSize',12); hold on;
plot(t,y2,'r--o');
text(6,1.5,'y2\\leftarrow','FontSize',12); title('y1 and y2')
2.按M函数文件格式创建文件开头 function f=chengxu(n) 用while循环实现程序功能 f(1)=1;f(2)=1; i=2;
while i<=n
f(i+1)=f(i-1)+f(i); i=i+1; end
用for循环实现 f(1)=1;f(2)=1; for i=2:n
f(i+1)=f(i-1)+f(i); end
第四套
MATLAB期末考试
一、填空题(每题2分,共10)
1:MATLAB的通用命令中若对函数功能和用法不熟悉,可用help命令;显示变量、阵列或文本时,可用disp命令;清除工作空间中的变量时,可用clear命令;保存和恢复工作空间,或者工作空间中的特定变量时,可用save和load命令。 2:在MATLAB图形系统中,如果需要给已经绘制好的图形加上栅格线,可以使用grid on命令,如果需要在指定的坐标位置标注文本时使用的函数为text。 3:MATLAB中用于控制不定次重复循环语句为while,若在循环执行过程中需要终止该循环时采用的语句为break。
4:用if判断语句判断80≥ x >60,在MATLAB中if语言后的判断应写为 if x<=80&x>60 。
5:为了使两个plot的图形在同一个坐标显示,可以使用 hold on 命令进行图形保持;
二、选择题(每题2分,共20)
1.下列哪个变量的定义是不合法的 C
(A) abcdef (B) xyz_3 (C) abcd-3 (D) x3yz
2:已知a=2:2:8, b=2:5,下面的运算表达式中,出错的为 C (A) a'*b (B) a .*b (C) a*b (D) a-b 3:下面的程序执行后array的值为 ( D) for k=1:10 if k>6 break; else
array(k) = k; end end
(A) array =10. (B) array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (C) array =6 (D) array = [1, 2, 3, 4, 5, 6]
4:设A=[2 4 3; 5 3 1; 3 6 7],则sum(A),length(A)和size(A)的结果(A ) A. [10 13 11] 3 [3 3] B. [9 9 16] 3 [3 3] C. [9 9 16] 9 [3 3] D. [10 13 11] 9 [3 3] 5:下列关于脚本文件和函数文件的描述中不正确的是( B ) A. 去掉函数文件第一行的定义行可转变成脚本文件; B. 函数文件可以在命令窗口直接运行; C. 脚本文件可以调用函数文件;
D. 函数文件中的第一行必须以function开始;
6:.i=2; a=2i; b=2*i; c=2*sqrt(-1); 程序执行后;a, b, c的值分别是多少?(A)a=4, b=4, c=2.0000i (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.0000i 7:下列哪条语句是正确的( C ) A=[1 2;3 4];B=[3;7]; A.*B; (B) A=cell(2,3); A(1,2)=[4;5]
(C) A=[2 3 5 7;9 4 6 1;7 3 2 5];B=[1 7;0 5];A(2:end,2:2:end) (D) x=-5:5;y=-5:5;z=x.*x-y.*y;surf(x,y,z) 8:
三、程序执行题(共30分)
1:写出执行以下代码后,MATLAB命令窗口上显示的x矩阵的值 (6分) 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);
答案:1 5 3 9 5 13 7 17 2:为解下列线性方程组,请写出MALAB语言程序。(8分)
4 x1 +2 x3 +3 x4 = 9 3 x2 +2 x3 + 3x4 = 8 2 x1 + x4 = 10 x3 -2 x2 + 3x4 =7
答案:A=[4 0 2 3; 0 3 2 3; 2 0 0 1; 0 -2 1 3;]; %3分 b=[9 8 10 7]'; %2分
(C) x=A\\b; 或x=inv(A)*b; %3分 3:下面的函数主要完成什么功能?(8分) function f=factor(n) if n<=1 f=1; else
f=factor(n-1)*n; end
答案:利用函数的递归调用,求n!。 4:下面的程序完成功能是什么?(8分) t=0:pi/50:3*pi; y0=exp(-t/2);
y=exp(-t/3).*sin(2*t);
plot(t,y,'-r',t,y0,':b',t,-y0,':b') xlabel(‘\\bf\\it t’); ylabel(‘\\bf\\it y’);
答案:在同一个图中绘制两个函数,这两个函数分别是: y=e(-t/3) y0=e(-t/3)*sin(3t) 四、编程题(每题10分,共20)
1:求解以下线性方程组,要求写出程序代码和运行结果(10分)
2x1- 3x2+ x3+2x4=8 x1+3x2+ x4=6 x1- x2+ x3+8x4=17x1+ x2-2x3+2x4=5
答案:
>> 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) 2:设x=sint, y=sin(nt+a),
(1)若a=1,令n =1,2,3,4,在四个子图中分别画出其曲线。
(2)若n=2,取a=0,π/3,π/2,及π,在四个子图中分别画出其曲线。 (1)matlab源程序如下; t=-pi:0.1:pi; %t的取值范围 a=1;n=1;%a=1,n=1 x=sin(t);%x的表达
y=sin(n*t+a); %y的表达式
subplot(221),plot(x,y)%在子图第一张,画出图像
hold on保持figure不关闭 t=-pi:0.1:pi; %t的取值范围 a=1;n=2; %a=1,n=2 x=sin(t);%x的表达式
y=sin(n*t+a); %y的表达式
subplot(222),plot(x,y) %在子图的第二张画出图像 hold on %保持figure不关闭 t=-pi:0.1:pi; %t的取值范围 a=1;n=3; %a=1,n=3 x=sin(t); %x的表达式
y=sin(n*t+a); %y的表达式
subplot(223),plot(x,y);%在子图的第三张,画出图像 hold on %保持figure不关闭 t=-pi:0.1:pi; %t的取值范围 a=1;n=4; %a=1,n=4 x=sin(t); %x的表达式
y=sin(n*t+a); %y的表达式
subplot(224),plot(x,y) %在子图的第四张上
五、程序填空和改错(每空5分,共20)
1:抛物线的方程为y?ax2?cx,输入c后,绘制该曲线,寻找曲线的最小值和对应的x值。小明编写程序如下: clc;clear;close all; c=input('c='); a=1;
x=-2:0.1:2;
xnum=length(x) or xnum=size(x,2);%(1)对变量xnum赋为数组x的个数 y=zeros(1,xnum);
y=a*x^2+c*x;→y=a*x.^2+c*x;%(2)按照函数形式对y赋值 figure;
plot(x,y) %(3)绘制曲线 xlabel('x');ylabel('y'); [ymin,Imin]=min(y);
xmin=x(ymin);→ xmin=x(Imin); %(4)找到最小函数值对应的x值
第五套
matlab期末考试试卷
考试时间:120分钟 考试分数:100分
一、填空题(每空1分,20分)
1、MATLAB常用操作界面包括、工作空间窗口、、、内存数组编辑器、M文件编辑/调试器、帮助导航/浏览器、图形窗口等。
2、MATLAB中Inf或inf表示、NaN或nan表示 、nargout表 示。
3、MATLAB中逗号主要用作;用作输入量与输入量之间的分隔符;。 4、工作空间浏览器主要用于内存变量的 、和 。
5、MATLAB实现将全下标转换为单下标的指令为、据单下标换算出全下标的指令为。
6、二维数组的标识有、、“逻辑1”标识。
7、在一个元胞数组A中寻访第2行第3列元胞元素用;寻访数组第 2行第3列元胞中的内容用。
8、MATLAB中clf用于清除、clc用于清除、clear用于清除MATLAB。
二、选择题(每题2分,20分)
1. 在matlab中_______用于括住字符串。 A., B.; C.‘’ D.“” 2.下列___D____是合法变量。
A. 1_1 B. a/b C.变量1 D. Eps
3.产生所有元素均为1的2行3列矩阵的命令是______。
A. ones(2,3) B.ones(3,2) C.eye(2,3) D.eye(3,2)
4.下列哪个变量的定义是不合法的 A. abcd-3 B. xyz_3 C. abcdef D. x3yz
?1234??,若要产生a的一个子矩阵?34?,则下 23455.已知数组a=??45???????9876??列命令中错误的是_____________。
A.a([1 2],[3 4]) B.a(1:2,3:end) C.a(linspace(1,2,2),3:4) D.a(:,:)
6.下面的程序执行后array的值为_____________。
for k=1:10 if k>6 break; else
array(k) = k; end end
A.array = [1, 2, 3, 4, 5, 6] B).array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
C.array =6 D.array =10.
7.在循环结构中跳出循环,但继续下次循环的命令为_________。
A.return; B. break ; C. continue ; D.keyboad
8.图形窗口(Figure)显示网格的命令是_____________。 A. axis on B. grid on C. box on D. hold on
9.已知a=2:2:8, b=2:5,下面的运算表达式中,出错的为 ____。 A.a' *b B.a .*b C. a*b D. a-b
10.运行如下程序后, 命令窗口(command windows)显示的结果为__。 A=[13,-56,78; 25,63,-735; 78,25,563; 1,0,-1]; y=max(max(A))
A.y=564 B.y=9 C.y=-735 D.y=563 三、阅读程序并回答问题(每题4分,共28分)
1、写出下列指令运行结果。
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、写出下列指令运行结果。
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*pi; 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’); grid on; 四、编程题(32分)
1、在同一图上分别用红色实线和绿色虚线绘制y1=sin(x)和y2=cos(x)在区间[0,4*pi]的曲线,并用星号*标出两条曲线的交点以及建立图例。(6分) 2、求解以下线性方程组,要求写出程序代码。(6分) 2x1-3x2+x3+2x4=8 x1+3x2+x4=6 x1-x2+x3+8x4=1 7x1+x2-2x3+2x4=5
3、某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣
输入所售商品的价格,求其实际销售价格。(8分)
4、编写程序实现f(n)=f(n-1)+f(n-2)(f(1)=1和f(2)=2)函数。(6分) 5、编写M函数文件,利用for循环或while循环完成计算函数y=sum(n)= 的任务,并利用该函数计算 n=20时的和(将总程序保存为??.m文件)。
(6分)
参考答案
一、填空题
1、命令窗口命令历史窗口当前目录窗口。 2、无穷大不是一个数函数输出宗量数目。
3、显示计算结果的指令与其后指令的分隔用作数组元素分隔符号。 4、查阅保存编辑。 5、Sub2indInd2sub。
6、“全下标”标识“单下标”标识。 7、A(2,3)A{2,3}。
8、清除图形窗清除指令窗中显示内容清除MATLAB工作空间中保存的变量。
二、选择题(每题2分,共20分)
1、C 2、D 3、A 4、A 5、D 6、A 7、C 8、B 9、C 10、D
三、阅读程序并回答问题(每题4分,共28分) 1、C = 1 2 3 4 5 6 7 8 9 10 11 12 D =
2 3 5 6 8 9 E =
4 5
2、A =
1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16 ans = 1 5 9 13 2 6 10 14
3 7 11 15 4 8 12 16 A =
0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0 3、ans = -1 -4 6 4 ans = 3 0 5 -2 ans = 3 6 9 12 ans = -3 -6 6 3
4、利用函数的递归调用,求n!。 5、
subch = ABc12 revch = 9gF65e4d321cBA ans =
ABC123D4E56FG9 6、
A{1,1} = this is cell A{2,1} =
1.0000 + 2.0000i A{1,2}{1} =
1 2 3 4 5 6 A{2,2} = 7 8 9 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*pi; 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、function sum=text4(n); sum=0; m=1;
while m<=n; sum=sum+m^m m=m+1; end
当n=20时 用上述程序求得的和为: 1.0688e+026
第六套
一、选择题(2×10)
1.变量名是以____开头,后接字母、数字或下划线的字符序列,最多63个字符。变量名区分大小写。A
A. 字母B.数字C.下划线D.大写字母 2.冒号表达式的一般格式为:B
A.初始值:终止值:步长B. 初始值:步长:终止值C. 初始值:终止值:元素总数D. 初始值:元素总数:终止值
3.linspace函数调用的格式为:C
A.linspace(初始值:终止值:步长)B.linspace( 初始值:步长:终止值)C.linspace( 初始值:终止值:元
素总数)D. linespace(初始值:元素总数:终止值) 4. A\\B等效于:A
A.inv(A)* B B. inv(B)*A C. A*inv(B) D. B*inv(A) 5.case子句后面的表达式不可以为: A.标量B.字符串C.单元矩阵D.数值矩阵 6.以下关于函数的说法错误的是:B
A.在M文件中只有一个主函数B.主函数不一定在最上方
C.主函数不能被其他文件的函数调用D.help和lookfor找不到子函数 7.函数subplot(m,n,p),m,n,p中哪个表示区号,区号按行还是列优先编号?D A.p 列B. n 列C.n 行D.p 行 8.下列哪个函数用来绘制三维网格图:B
A.surf函数 B.mesh函数C.plot3函数 D.以上都不是 9.gcf函数表示:A
A.获取当前图形窗口的句柄B.获取当前坐标轴的句柄
C.获取最近被选中的图形对象的句柄D.按照指定的属性来获取图形对象的句柄 10.N次多项式用长度为___的___向量表示。C A.N+1 列B.N 列C.N+1 行 D.N 行 二、填空题(2×10)
1.注释以 _ % 开头,后面是注释的内容.
2.__clear__命令用于删除MATLAB工作空间中的变量,_clc___命令用于清屏。 3.矩阵元素按 列 (列/行)编号。 4.点运算要求两矩阵的 维数 相同。
5.MATLAB实现将全下标转换为单下标的指令为Sub2ind、据单下标换算出全下标的指令为 Ind2sub。
6.命令文件可以(不可以/可以)直接运行,函数文件不可以(不可以/可以)直接运行。 7.函数文件定义的变量为局部变量(局部/全局)。 三、程序阅读(4×10) 写出程序运行结果。
1. >>A=[3 5 7 9;0 2 4 1;6 4 4 8]; >>B=A([1 2],2:3) 答案: B=5 7 2 4
2.>>a=[6 9 3;2 7 5]; >> b=[2 4 1;4 6 8]; >> c=a.*b 答案: c=12 36 3 8 42 40 3.>>A=[6 4 4 8];
>>B=[1 1 1 0;1 1 1 0;1 1 1 0; 0 0 0 5]; >>C=[A;B(:,1:3)’] 答案: C=
6 4 4 8 1 1 1 0 1 1 1 0 1 1 1 0 4. 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
答案:x=1 5 3 9 5 13 7 17 四、编程(2×10)
1.输入三个数按从大到小的顺序输出。(使用if)答案:
a=input('a=?'); a(1)=a(3); if a(1) 判 f=input('输入第一个字母(大写字符)'); switch f case 'S' s=input('输入第二个字母(小写字符)'); if s=='a' disp('Saturday') elseif s=='u' disp ('Sunday'); else disp('data error'); end break; case 'F' disp('Friday');break; case 'M' disp('Monday');break; case 'T' s=input('输入第二个字母(小写字符)’); if s=='u' disp('Tuesday'); elseif s=='h' disp ('Thursday'); else disp('data error'); end break; case 'W' disp('Wednesday'); break; otherwise disp('data error'); end 第七套 一、填空题(每题5分,共25分) 1)rand(2,3)的含义为 生成2×3随机矩阵。 2)MATLAB语言支持的3种最基本的控制结构为顺序结构、选择结构和循环结构。 3)在循环结构中跳出当前循环,继续下一次循环的命令为comtinue。 4)MATLAB中逗号主要用作 要显示计算结果的指令与其后指令的分隔;用作输入量与输入量之间的分隔符;用作数组元素分隔符号。 5)工作空间浏览器主要用于内存变量的内存变量的查阅、保存和编辑。 二、单选题(每题5分,共25分) 1.下列哪个变量的定义是不合法的 A (A) abcd-3 (B) xyz_3 (C) abcdef (D) x3yz 2. 下列哪条指令是求矩阵的行列式的值 C (A) inv (B) diag (C) det (D) eig 3. 用round函数四舍五入对数组[2.48 6.39 3.93 8.52]取整,结果为 C (A) [2 6 3 8] (B) [2 6 4 8] (C) [2 6 4 9] (D) [3 7 4 9] 4. 已知a=2:2:8, b=2:5,下面的运算表达式中,出错的为 C (A) a'*b (B) a .*b (C) a*b (D) a-b 5. 下面的程序执行后array的值为 ( A ) for k=1:10 if k>6 break; else array(k) = k; end end (A) array = [1, 2, 3, 4, 5, 6] (B) array = [1,2,3,4 5,6,7, 8, 9, 10] (C) array =6 (D) array =10 三、简答题(20分) 1.求积分 (5分) 2.求微分方程的数值解(5分) dsolve('D2y*(x-1)+2*Dy+y=0','y(0)=1,Dy(0)=1','x') 3.抛物线的方程为y?ax2?cx,输入c后,绘制该曲线,寻找曲线的最小值和对应的x值。(10分) 小明编写程序如下: clc;clear;close all; c=input('c='); a=1; x=-2:0.1:2; ; % (1)对变量xnum赋为数组x的个数 y=zeros(1,xnum); y=a*x^2+c*x;→%(2)按照函数形式对y赋值 figure; ; %(3)绘制曲线 xlabel('x');ylabel('y'); [ymin,Imin]=min(y); xmin=x(ymin);→%(4)找到最小函数值对应的x值 答案: clc;clear;close all; c=input('c='); a=1; x=-2:0.1:2; xnum=length(x)or xnum=size(x,2);%(1)对变量xnum赋为数组x的个数 y=zeros(1,xnum); y=a*x^2+c*x;→y=a*x.^2+c*x;%(2)按照函数形式对y赋值 figure; plot(x,y) %(3)绘制曲线 xlabel('x');ylabel('y'); [ymin,Imin]=min(y); xmin=x(ymin);→xmin=x(Imin);%(4)找到最小函数值对应的x值 四、编程题(30分) 1.自己设计一个m函数文件,用来画出椭圆x*x/16+y*y/9=1。(10分) 答案: M文件的程序: %画椭圆 tt=0:0.02:2*pi; xx=4*cos(tt);yy=3*sin(tt); axis equal plot(xx,yy,'m*') title('椭圆x^2/16+y^2/9=1') 2.在xy平面内选择区域[-8,8]×[-8,8],利用mesh、meshc、meshz和surf绘 制 答案: x=-8:0.1:8; y=x; [x,y]=meshgrid(x,y); m=sqrt(x.^2+y.^2); z=sin(m)./m; subplot(2,2,1); mesh(x,y,z); subplot(2,2,2); meshc(x,y,z); subplot(2,2,3); meshz(x,y,z); subplot(2,2,4); surf(x,y,z) 。要求用子图在一个图形窗口中绘制。 3.利用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函数。 答案: len= menu('select a num','1','2','3','4', '5'); %3分 switch len % switch 语句格式写对2分 case 1 y=zeros(4,3); %1分 case 2 y=5.*ones(3,4); %1分 case 3 y=5+randn(5,3); %1分 case 4 y=’not an array’; %1分 otherwise disp(‘Error’) %1分 end 第八套 一、填空题(一题3分,共15分) 1、标点符号_______可以使命令行不显示运算结果。 答案:% 2、x 为0 ~4 ,步长为0.1pi 的向量,使用命令_______创建。 答案:x=0:0.1*pi:4。 3、输入矩阵A=[1 2 3;7 -5 8;9 -1 -7],使用全下标方式用A(2,2) 取出元素“-5 ”,使 用单下标方式用_______取出元素“-5 ”。 答案:A(5)。 4、在while 表达式, 语句体, End 循环语句中,表达式的值__ __时表示循环条件为真,语句体将被执行,否则跳出该循环语句。 答案:非零。 5、要从键盘读入一个字符串并赋值给变量x,且给出提示“Hello”,应使用命令_________. 答案:x=input(‘Hello’,’s’)。 二、选择题(一题3分,共15分) 1、 下列表示可以作为MATLAB的变量的是( D ) A.abcd-2 B.xyz_2# C.@h D.X_1_a 2、如果x=1: 2 : 8,则x(1)和x(4)分别是( B ) A.1,8 B.1, 7 C.2, 8 D.2, 7 3、指出下列错误的指令(B)。 A.syms a b; B. syms a, b; C.syms(‘a', ’b'); D. syms(‘a','b','positive'); 4、下列哪条指令是求矩阵的行列式的值(C)。 A .inv B. diag C. det D.eig 5、清空 Matlab 工作空间内所有变量的指令是(C)。 A. clc B.cls C.clear D. clf 三、程序分析题(一题10分,共20分) 1、分析下面程序运行后s1,n1,s2,n2,m的值。 s1=0;s2=0;n1=0;n2=0; x=[1,-4,-8,3,10,-9,7,-3,10, 8,-5,-2,2,0 ]; m=length(x); for i=1:m if x(i)<0 s1=s1+x(i); n1=n1+1; else s2=s2+x(i); n2=n2+1; end end s1,n1,s2,n2,m 请回答s1,n1,s2,n2,m的结果。 答案:s1=-31, n1=6,s2=41,n2=8,m=14。 2、求出mysum的值 mysum=0; i=1; while(i<=100) mysum=mysum+i; i=i+1; end mysum 答: mysum = 5050 四、程序改错题(一题10分,共10分) 1. 下面的语句用来判断一个人的体温是否处于危险状态(华氏温度),请找出错误并改正。 temp=input('Enter temperature:') if temp<97.5 disp('Temperature below normal'); elseif temp>97.5 改正:temp>97.5 &temp<=99.5 disp('Temperature normal'); elseif temp>99.5 改正:temp>99..5 &temp<=103.0 disp('Temperature slightly high'); else temp>103.0 改正:去掉temp>103.0 disp('Temperature dangerously high'); end 五、程序编程题(共40分) 1、用MATLAB编程求下列联立方程的解 3x+4y-7z-12w=4 ;5x-7y+4z+ 2w=-3; x +8z- 5w=9 ;-6x+5y-2z+10w=-8 。求系数矩阵的秩,求出方程组的解。(5分) 答案:a=[3 4 -7 -12; 5 -7 4 2 ;1 0 8 -5; -6 5 -2 10]; c=[4; -3; 9;-8]; b=rank(a) d=a\\c X=d(1) Y=d(2) Z=d(3) W=d(4) >> b = 4 x=-1.4841;y= -0.6816;z= 0.5337;w=-1.2429 2、编写函数文件求半径为r的圆的面积和周长。(5分) 答案:function [s,p]=fcircle(r) s=pi*r*r; p=2*pi*r; 3、Fibonacci数列的各元素为:1、1、2、3、5、8、??,满足以下关系F1=1, F2=1,Fn=Fn-1+Fn-2,用M函数文件实现,数列的元素个数为输入变量,且当某个元素大于50时,退出循环结构。(10分) 答案: function f=shiyan5(n) f(1)=1;f(2)=1; for i=2:n f(i+1)=f(i-1)+f(i); if f(i+1)>50 break; end end 4、从键盘输入任意个正整数,以0结束,输出那些正整数中的素数。(20分) 答案: clc;clear; zzs(1)=input('请输入正整数: '); k=1; n=0;%素数个数 while zzs(k)~=0 flag=0; %是否是素数,是则为1 for yz=2:sqrt(zzs(k)) %因子从2至此数平方根 if mod(zzs(k),yz)==0 flag=1; break; %非素数跳出循环 end end if flag==0&zzs(k)>1 %忽略0和1的素数 n=n+1;sus(n)=zzs(k); end k=k+1; zzs(k)=input('请输入正整数: '); end disp(['你共输入了' num2str(k-1) '个正整数。它们是:']) disp(zzs(1:k-1)) %不显示最后一个数0 if n==0 disp('这些数中没有素数!')%无素数时显示 else disp('其中的素数是:') disp(sus) end 第九套 MATLAB试题 一、填空题。(每空1分,共20分) 1、MATLAB中( clc )用于清除指令窗中显示的内容,( clear )用于清除工作空间中保存的变量,( clf )用于清除图形窗口。 2、MATLAB中(help)命令只搜索出关键字完全匹配的结果,(lookfor)命令对搜索范围内的M文件进行关键字搜索。 3、MATLAB变量名必须以(字母)开头,MATLAB提供的标准函数名以及命令必须用(小写字母)。 4、t是0~4pi,步长为0.1pi的向量,使用冒号表达式建立向量为(t=0:0.1*pi:4*pi),使用linspace函数建立向量为linspace(0,4*pi,10)。 2 -6 0 5、已知矩阵A= 3 1 -8 ,用全下标方式( A(3,2) )取得元素‘8’,用单 5 8 6 下标方式( A(8) )取得元素‘-8’.。 6、在MATLAB矩阵除法中,A\\B等效于( inv(A)*B ),B/A等效于( B*inv(A) ) 7、A=[1 2;3 4],B=[1 0;0 1],A*B=( [1 2;3 4] ),A.*B=( [1 0;0 4] )。 8、为了使两个plot的图形在同一个坐标显示,可以用(hold on)命令进行图形保持,一个图形窗口上绘制多个图形可以用( subplot() )函数进行分割窗口。 9、MATLAB提供了mesh函数和surf函数分别用来绘制(三维网格图)和(三位曲面图)。 10、对于线性方程组Ax=B,其求解方式为(x=A\\B)。 二、选择题。(每题3分,共30分) 1、关于主函数,以下说法正确的是(B) A.主函数名必须与文件名相同 B.主函数的工作空间与子函数的工作空间是嵌套的 C.主函数中不能定义其他函数 D.每个函数文件中都必须有主函数 2、已知数组A=[1 2;4 5] ,则A(1,:)是指(B) A.第一行向量 B.第一列向量 C.整个数组 D.第一个元素 3、legend()命令是(A) A.在图中标注“图例”; B.在图中加上网格线 C.在图中加上标题 D.打印图形 4、指出下列错误的指令(B)。 A.syms a b; B.syms a, b; C.syms(?a', ?b'); D.syms(?a','b','positive'); 5、下列哪条指令是求矩阵的行列式的值(C)。 A .inv B. Diag C.det D .eig 6、下列MATLAB语句不正确的是(C) A. A=[1,2,3; 4 5 6; 7 8 0]; sum(A(:)) B. A=[1,2,3; 4 5 6; 7 8 0]; C=A>6 C. A=[1,2,3; 4,5,6; 7,8,0]; A(1,:).*A(:,3) D. A=[1,2,3; 4,5,6; 7,8,0]; A(1,:)*A(:,3) 7、如果有函数声明行为:function[x,y,z]=exefun1(a,b,c)。则下述函数调用格式错误的是(B)。 A. x=exefun1(a,b,c) B. [x,y,z,w]=exefun1(a,b,c) C. [x,b,z]=exefun1(a,y,c) D. [a,b]=exefun1(x,y,z) 8、在循环结构中跳出循环,但继续下次循环的命令为( C ) A. return; B. break C. continue D. keyboad 9、运行如下程序后,输入9回车,命令窗口(command windows)显示的结果为(A) c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>='a'& c<='z' disp(setstr(abs(c)- abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); End A. 9 B. 8 C. 7 D. 6 10、下列哪个函数名是四舍五入到最邻近的整数(C) A.mod B.ceil C.round D.floor 三、程序阅读题(每题5分,共10分) 1、请写出下面程序执行后的结果。 for i=1:3 for j=3:5 if j==4; continue; end product=i*j; fprintf('%d*%d=%d\\n',i,j,product); end fprintf('End of inner loop!\\n'); end fprintf('End of outer loop!\\n'); 结果: 1*3=3 1*5=5 End of inner loop! 2*3=6 2*5=10 End of inner loop! 3*3=9 3*5=15 End of inner loop! End of outer loop! 2、简述下面的函数主要完成什么功能 function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; end 答案:利用函数的递归调用求n! 四、编程题。(共40分) 1、求下列联立方程的解 (10分) 3x+4y-7z-12w=4 5x-7y+4z+ 2w=-3 x+8z- 5w=9 -6x+5y-2z+10w=-8 (1)求系数矩阵的秩;(2) 求出方程组的解。答案: A=[3 4 -7 -12; 5 -7 4 2 ; 1 0 8 -5; -6 5 -2 10]; B=[4; -3; 9;-8]; C=rank(A) D=A\\C 2、设 y1=4exp(-2x)cos(3sin(pi*x)) ,y2=2exp(-0.5x)sin(2pi*x) 把x=0~4π间分为100点,在一个图形窗口中画出以x为横坐标,y为纵坐标的两条曲线,并设置曲线y1颜色为红色,y2为绿色,y2线型为虚线,添加图例。(15分) 答案: x=linspace(0,4*pi,100); y1=4*exp(-2*x).*cos(3*sin(pi*x)); y2=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y1,'r'); hold on plot(x,y2,'g--') legend('曲线y1','曲线y2'); 3、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是 完数。求[1,500]之间的全部完数。(15分) 答案: for m=1:500 s=0; for k=1:m/2 if rem(m,k)==0 s=s+k; end end if m==s disp(m); end end 第十套 一、选择题(每小题2分,共22分) 1. 在matlab中____C____用于括住字符串。 A., B.; C.?? D.“” 2. 在matlab的命令窗口中执行__A_______命令,可将命令窗口中所有变量清空。 A. clear B. clc C. echo off D. cd 3.下列___D____是合法变量。 A. 1_1 B. a/b C.变量1 D. eps 4产生所有元素均为1的2行3列矩阵的命令是_A______。 A. ones(2,3) B.ones(3,2) C.eye(2,3) D.eye(3,2) 5.已知a=0:4,b=1:5,下面的运算表达式出错的是_D_______。 A. a+b B. a./b C. a.*b D. a*b 6. subplot(2,1,2)是指__B_______的子图。 A.两行一列的上图 B.两行一列的下图 C.两列一行的左图 D.两列一行的右图 7.在多个句柄对象中,句柄是1的应该是_C_____对象。 A.根对象 B.坐标轴 C.窗口 D.屏幕 8.使用from:step:to方式生成向量,“-3:1:3”,其中-3,1,3分别是:(B) A、步长值,结束值,开始值 B、开始值,步长值,结束值 C、结束值,步长值,开始值 D、开始值,结束值,步长值 9.i=2; a=2i; b=2*i; c=2*sqrt(-1); 程序执行后a, b, c的值分别是多少?(C ) A.a=4, b=4, c=2.0000i 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.0000i 10. 下列关于脚本文件和函数文件的描述中不正确的是(B ) A. 去掉函数文件第一行的定义行可转变成脚本文件; B. 函数文件可以在命令窗口直接运行; C. 脚本文件可以调用函数文件; D. 函数文件中的第一行必须以function开始; 11.下列对条件语句、分支语句、固定循环次数语句、不定循环次数语句关键字排序正确的是( B) A. if else end; for end; switch case end; while end; B. if else end; switch case end; for end; while end; C. for end; if else end; while end; switch case end; D. while end; for end; switch case end; if else end; 二、填空题(20分,1空2分) 1. 求可逆矩阵A的逆矩阵的指令是__inv(A) __. 2. A=[0 2 3 0],B=[4 5 0 0],则X=A&B的显示结果为__ 0 1 0 0___. 3. Matlab中用来表示不确定值的变量是 _NaN_。. 4. M文件包括__M脚本__文件和__M函数__文件. 5.下面的程序执行后array的值为__[1,2,3,4,5,6]_______. for k=1:10 if k>6 break; else array(k) = k; end end 6. w=[zeros(3,1) ones(1,3)' (3:5)']的结果是 0 1 3 0 1 4 0 1 5 7.把一个图形显示在一个图像窗口的m×n个子图像中的第p个位置的命令是subplot(m,n,p) 8.在一个元胞数组A中寻访第2行第3列元胞元素用A(2,3);寻访数组第2行第3列元胞中的内容用A{2,3}。 三、程序分析(28分) 1.下面的程序完成功能是什么?(5分) t=0:pi/50:4*pi; 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?); grid on; 解:在同一个图中绘制两个函数,这两个函数分别是: y=exp(-t/3)y0=exp(-t/3)*sin(3t) 2.分析以下函数执行过程,回答问题:(6分) function c = testarg1(a, b) if (nargin == 1) c = a .^ 2; elseif (nargin == 2) c = a + b; end 如果用户使用一个参数调用函数testarg1,函数执行什么功能?如果使用两个参数调用函数testarg1,函数又执行什么? 答:题干程序中nargin是判断输入参数个数,根据不同输入参数执行不同操作。如果用户使用一个参数(a)调用函数testarg1,函数执行c=a.^2。如果使用两个参数(a,b)调用函数testarg1,函数执行c=a+b。 3.写出下列指令的运行结果。(7分) >>X=[2,0;2,4];Y=[-1 -4;1 0];A=3; >>X.*Y >>X*Y >>X.*A 答:ans = -2 0 2 0 ans = -2 -8 2 -8 ans = 6 0 6 12 4.现有下列脚本程序,请分析该“for”循环执行情况并写出该程序运行结果。(for m=1:3 for n=1:3 H(m,n)=m^2+n end end 答:H = 10分) 2 H = 2 3 5 H = 2 3 4 H = 2 3 4 5 0 0 H = 2 3 4 5 6 0 H = 2 3 4 5 6 7 H = 2 3 4 5 6 7 10 0 0 H = 2 3 4 5 6 7 10 11 0 H = 2 3 4 5 6 7 10 11 12 四、使用MATLAB语言进行编程(30分) 1. 在同一图上分别用红色实线和绿色虚线绘制y1=sin(x)和y2=cos(x)在区间[0,4*pi]的曲线,并用星号*标出两条曲线的交点以及标注图例。(5分) clf x=0:pi/200:4*pi; 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.A 是一个維度m×n的矩阵. 写一段程序, 算出A中有多少个零元素(10分) 答:>> A= input ('请输入一个矩阵') [m,n]= size(A); sig=0; for i=1:m for j=1:n if A(i,j)==0 sig = sig+1; end end end 请输入一个矩阵[0 1 2;1 0 2; 0 0 0] A = 0 1 2 1 0 2 0 0 0 >> sig sig = 5 3.打印出所有的水仙花数。所谓“水仙花数”,是指一个三位数,其各位数字立方之和等于该数本身。(15分) 解: 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 第十一套 《MATLAB语言与编程及技术》期末试卷 一,填空题(25’) 1、MATLAB中逗号主要用作显示计算结果的指令与其后指令的分隔;用作输入量与输入量之间的分隔符;用作数组元素分隔符号。 2、 已知A=[0 9 6;1 3 0];B=[1 4 3;1 5 0];写出下列各指令运行的结果。 A & B 的运行结果 ans = 0 1 1 1 1 0 ; A ./ B 的运行结果 ans= 0 2.2500 2.0000 1.0000 0.6000 NaN 。 3、标点符号分号可以使命令行不显示运算结果, 百分号用来表示该行为注释行。 4、MATLAB的通用命令中列出内存中的变量目录可用whos命令;若对函数功能和用法不熟悉,可用help命令;显示变量、阵列或文本时,可用disp命令;清除工作空间中的变量时,可用clear命令;保存和恢复工作空间,或者工作空间中的特定变量时,可用save和load命令。 5、MATLAB中用于控制不定次重复循环语句为while(while end),若在循环执行过程中需要break 终止该循环时采用的语句为 。 二,选择题(25’) 1、下列哪个变量的定义是不合法的 (A) (A) abcd-3 (B) xyz_3 (C) abcdef (D) x3yz 2、在循环结构中跳出循环,执行循环后面代码的命令为 (B) (A) return (B) break (C) continue (D) keyboard 3、下列关于脚本文件和函数文件的描述中不正确的是 ( B ) A. 去掉函数文件第一行的定义行可转变成脚本文件; B. 函数文件可以在命令窗口直接运行; C. 脚本文件可以调用函数文件; D. 函数文件中的第一行必须以function开始;