Matlab-期末考试题库(共12套卷) 下载本文

第一套

华东交通大学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开始;