武汉轻工大学MATLAB期末考试试卷汇总_第1页
武汉轻工大学MATLAB期末考试试卷汇总_第2页
武汉轻工大学MATLAB期末考试试卷汇总_第3页
武汉轻工大学MATLAB期末考试试卷汇总_第4页
武汉轻工大学MATLAB期末考试试卷汇总_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB期末考试试卷及其参考答案

一、填空题〔每空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中elf用于去除图形窗、clc用于去除指令窗中显示内容、clear用于去除MATLAB工作空间中保存变量。

二、简答题(每题5分,共20分)

简述MATLAB历史指令窗主要作用。

历史指令窗记录着用户在MATLAB指令窗中所输入过所有指令。历史记录包括:每次开启MATLAB时间,每次

开启MATLAB后在指令窗中运行过所有指令。应用功能有单行或多行指令复制和运行、生成M文件等。

2、简述空数组功用。

“空”数组功用:在没有“空”数组参与运算时,计算结果中“空〃可以合理地解释“所得结果含义”;运用"空”数

组对其他非空数组赋值,可以改变数组大小,但不能改变数组维数。

3、简述MATLAB函数根本构造。

典型M函数文件构造:函数申明(定义)行(Functiondeclarationline)、HI行(Thefirsthelptextline)、在线帮助文

本(Helptext)区、编写和修改记录、函数体(Functionbody)。

4、简述绘制二维图形一般步骤。

绘制二维图形一般步骤为:曲线数据准备、选定图形窗及子图位置、调用二维曲线绘图指令、设置轴范围、坐标

分格线、图形注释、图形精细操作。

三、阅读程序并答复以下问题(每题4分,共28分)

1、写出以下指令运行结果.

A=zeros(2,4);

A(:)=1:8;

s=[235];

A(s)

Sa=[102030]'

A(s)=Sa

ans=

235

Sa-

10

20

30

A=

120307

10468

2、写出以下指令运行结果。

A=reshape(1:16,2,8)

A=

246810121416

reshape(A,4,4)

ans=

15913

261014

371115

481216

s=[l3689111416];

A(s)=0

A=

0057001315

2400101200

3、写出以下指令运行结果。

A=[l,2;3,4];

B=[-l,-2;2,l];

S=3;

A.*B

A*B

S.*A

S*B

ans=

-1-4

64

ans=

30

5-2

ans=

36

912

ans=

-3-6

63

4、下面函数主要完成什么功能?

functionf=factor(n)

ifn<=1

f=l;

else

f=factor(n-l)*n;

end

利用函数递归调用,求n!。

5、写出以下指令运行结果。

ch=<ABcl23d4e56Fg9,;

subch=ch(l:5)

revch=ch(end:-l:l)

k=find(ch>=4a,&ch<=4z,);

ch(k)=ch(k)-(ta,-4A,);

char(ch)

length(k)

subch=

ABcl2

revch=

9gF65e4d321cBA

ans=

ABC123D4E56FG9

6、写出以下指令运行结果。

A(1,1)={'thisiscell'};

A{1,2}={[123;456]};

A{2,l)=[l+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}=

thisiscell

A(2,1)=

A{1,2}{1}=

123

456

A{2,2}=

789

101112

7、在同一个图中绘制两个函数,这两个函数分别是:

y=e("3)

y0=e(t/3,*sin(3t)

其中y是用红色细实线,而y0是用兰色虚线绘制,t区间是(0:4兀),t步长为冗/50,t轴和y轴分别用斜粗题指示,图中

有网格表示。

四、编程题(32分)

I、I、在同一图上分别用红色实线和绿色虚线绘制yl=sin(x)和y2=cos(x)在区间[0,4*pi]曲线,并用星号*标出两条曲

线交点以及建立图例。(5分)

答案

elf

x=0:pi/200:2*pi;

yl=sin(x);

y2=cos(x);

zz=x(find(abs(yl-y2)<0.005))

z=min(zz)

plot(x,yl;r-',x,y2;g-.')

holdon

plol(zz,sin(zz),'*')

legend('sin','cos')

2、分别在同一图形窗不同子图绘制y=sin(t)sin(9t)和y=sin(t)sin(9t)及其包络线。[4分)

答案

t=(0:pi/100:pi)’;

yl=sin(t)*[l,-l];

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(l,2,2)

plot(t»y2;b')

axis([0,pi,-l,l])

3、某商场对顾客所购置商品实行打折销售,标准如下(商品价格用price来表示):

price<200没有折扣

200<price<5003%折扣

500<price<10005%折扣

1000<price<25008%折扣

2500<price<500010%折扣

5000<price14%折扣

输入所售商品价格,求其实际销售价格。(5分)

答案

price=input(,请输入商品价格);

switchfix(price/100)

case{0,1}%价格小于200

rate=0;

case{2,3,4}%价格大于等于200但小于500

rate=3/100;

casenum2cell(5:9)%价格大于等于500但小于1000

rate=5/100;

casenum2cell(10:24)%价格大于等于1000但小于2500

rate=8/100;

casenum2cell(25:49)%价格大于等于2500但小于5000

rate=10/100;

otherwise%价格大于等于5000

rate=14/100;

end

price=price*(1-rate)%输出商品实际销售价格

4、编写程序实现f(n)=f(n-l)+f(n-2)(f(l)=l和f(2)=2)函数。(6分)

答案

functionf=fab(n)

if(n==l)

f=1;

elseif(n==2)

f=2;

else

f=fab(n-l)+fab(n-2);

end

5、编写一个学生成绩管理程序(12分)

A.构造一个学生构造,包括学生学号,姓名,课程名称(限五门),考试成绩和平均值等域;(4分)

B.从键盘上,连续输入N个学生情况,分别将这些学生情况填入到相应域,假设域中没有值即为空或0并计算平均

成绩写入到平均值域。(4分)

C.根据平均值排序,并输出学生姓名、学号和平均成绩。(4分)

答案

strl=";

str2=n;

str3=n;

val=cell(5,2)

a=zeros(5,l);

ave=0;

student=struct('Name',strl,'No',slr2,'Scores',val,'Ave',ave);

n=inputC^leaseinputstudentsnumber:');

fori=l:n

strl=inputCName:*);

str2=inputCNo.:*);

%fork=l:2

%val(k,:)=input('CuiTiculumsandScores:*);

%a(k,l)=val{k,2};

%end

%val(l,:)=input(^Curriculum:^);

%val(:,2)=input(rScores:');

val=input(*pleaseinputfiveCurriculumsandScores:*);

fork=l:5

a(k,l)=val{k,2};

end

student(i).Name=strl;

student(i).No=str2;

student(i).Scores=val;

student(i).Ave=mean(a);

end

forii=1:(length(student)-l)

iptr=ii;

forjj=ii+l:length(student)

if(student(jj).Ave>student(iptr).Ave)

iptr=jj;

end

end

ifii~=iplr

temp=student(ii);

student(ii)=student(iptr);

student(iptr)=temp;

end

end

forii=l:length(student)

ifstudent(ii).Ave>80

disp(student(ii).Name);

disp(student(ii).Ave);

end

end

disp([*studentname',blanks(6),Studentno.*,blanks(6),'studentaverage,]);disp(,1)

forii=l:length(student)

disp([student(ii),Name,blanks(20),student(ii).No,blanks(20),num2str(student(ii).Ave)]);

end

答案

strl=u;

str2廿';

str3=M;

val=cell(5,2)

a=zeros(5,l);

ave=0;

student=struct(fName',strl,'No1,str2,Scores*,val,1Ave1,ave);

n=input('pleaseinputstudentsnumber:1);

fbri=l:n

strl=inputCNamef);

str2=inputCNo.:*);

%fork=l:2

%val(k,:)=input(,CurriculumsandScores:1);

%a(k,l)=val{k,2};

%end

%val(l,:)=input('Cuiriculum:');

%val(:,2)=inputCScores:1);

val=input('pleaseinputfiveCumculumsandScores:1);

fork=l:5

a(k,l)=val{k,2};

end

student(i).Name=strl;

student(i).No=str2;

student(i).Scores=val;

student(i).Ave=mean(a);

end

forii=1:(length(student)-1)

iptr=ii;

forjj=ii+l:length(student)

if(student(jj).Ave>student(iptr).Ave)

iptr=jj;

end

end

ifii〜二iptr

temp二student(ii);

student(ii)=student(iptr);

student(iptr)=temp;

end

end

forii=l:length(student)

ifstudent(ii).Ave>80

disp(student(ii).Name);

disp(student(ii).Ave);

end

end

1

disp(「studentname,blanks(6),Studentno.\blanks(6),Studentaverage']);disp('')

forii=l:length(student)

disp([student(ii).Name,blanks(20),student(ii).No,blanks(20),num2str(student(ii).Ave)]);

end

一、填空题(每空2分,总共30分)

1.A=[096;130];B=[l43;150];写出以下各指令运行结果。

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判断语句判断802x〉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图形在同一个坐标显示,可以使用holdon命令进展图形保持:

可以使用gridon命令为图形添加网格。

savemydata_______loadmydata____。

二、选择题,每空2分,总共20分)

1.以下哪个变量定义是不合法」______

(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)cis(C)clear(D)elf

5.用round函数四舍五入对数组[2.486.393.938.52]取整,结果为C

(A)[2638](B)[2648](C)[2649](D)[3749]

6.a=2:2:8,b=2:5,下面运算表达式中,出错为C

(A)a*b(B)a.*b(C)a*b(D)a-b

7.角度x=[304560],计算其正弦函数运算为2

(A)SIN(deg2rad(x))(B)SIN(x)(C)sin(x)(D)sin(deg2rad(x))

8.下面程序执行后array值为(A)

fork=l:10

ifk>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(T);程序执行后;a,b,c值分别是多少?

(A)a=4,b=4,c=2.OOOOi(C)

(D)

10.求解方程X'-4X3+12X-9=0所有解

三、写出程序执行结果或写出给定要求指令(总共35分)

1.写出执行以下代码后C,D,E值(6分)

A=[l,2,3;4:6;7:9];

C=[A;[10,11,12]],

D=C(1:3,[23])

E=C(2,[12])

2.写出执行以下代码后,MATLAB命令窗口上显示x矩阵值(5分)

x=[0,1,0,2,0,3,0,4];

fork=l:8

ifx(k)==0

x(k)=k;

else

x(k)=2*k+l;

end

end

disp(x);

3.创立符号函数并求解,要求写出步骤和运行结果(7分)

(1)创立符号函数f=ax2+bx+c

⑵求f=0解

4.求解以下线性方程组,要求写出程序代码和运行结果(5分)

2x1-3x2+x3+2x4=8

x1+3x2+x4=6

xl-x2+x3+8x4=l

7x1+x2-2x3+2x4=5

5.绘制函数曲线,要求写出程序代码(12分)

⑴在区间[0:2均匀取50个点,构成向量n

(2)在同一窗口绘制曲线yl=sin(2*t-0.3);y2=3cos(t+0.5);要求yl曲线为红色点划线,标记点

为圆圈;y2为蓝色虚线,标记点为星号

四、使用MATLAB语言进展编程(15分)

打印出所有水仙花数。所谓“水仙花数”,是指一个三位数,其各位数字立方之和等于该数本身。

一、填空题

1、

ans=

011

110

ans=

1.00000.6000NaN

2、zeros(4)ones(3)

3、[25][5]

4、;%

5、ifx<=80&x>60

6、polyint(P,K)[k,r]=deconv(P,Q)

7、holdongridon

8,savemy_dataLoadmy_data

__、选择题

1,A2、C3>B4、C5、C6、C7、D8、A9、C10、A

三、写出程序执行结果或写出给定要求指令

1、

c=

D=

23

56

89

E=

45

2、

1539513717

3,

»symsabcx

»s=a*x'2+b*x+c;

»solve(s)

ans=

[l/2/a*(-b+(b-2-4*a*c)"(1/2))]

[l/2/a*(-b-(b*2-4*a*c)"(1/2))]

4、

»symsabcx

»symsxlx2x3x4

»clear

»symsxlx2x3x4

»f=2*xl+3*x2+x3+2*x4-8;

»g=xl+3*x2+x4-6;

»h=xl-x2+x3+8*x4-1;

»i=7*xl+x2-2*x3+2*x4-5;

»[xl,x2,x3,x4]=solve(f,g,h,i)

xl=

13/17

x2=

320/187

x3=

212/187

x4=

19/187

5、

t=1inspace(0,2*pi,50);

plot(t,yl,'r-o',t,y2,'b-*');

四、使用MATLAB语言进展编程

fork=100:999

a=fix(k/100);

b=rem(fix(k/10),10);

c=rem(k,10);

ifa.3+b.*3+c.3==k

fprintf("%u,\t\t",k)

end

end

根本知识填空题(每空1分,共20分)

1.MATLAB通用命令中列出内存中变量目录可用_whos命令;假设对函数功能和用法不熟悉,

可用_help命令;显示变量、阵列或文本时,可用_disp命令;去除工作空间中变量时,可

用一clear命令;保存和恢复工作空间,或者工作空间中特定变量时,可用_save和」oad

命令。

2、在MATLAB图形系统中,如果需要给已经绘制好图形加上栅格线,可以使用_gridon__________命

令,如果需要在指定坐标位置标注文本时使用函数为text,需要绘制3条曲线,保持当前图

形窗口可使用_holdon命令。

3、用MATLAB绘制条形图时可使用_bar(或barhj_________函数,绘制柱状图,用以表示数据值分布情

况时可使用_hist函数。

4、MATLAB中用于控制不定次重复循环语句为while(whileend),假设在循环执行过程中需

要终止该循环时采用语句为break。

5、对于MATLAB中多维阵列,在保持所有元素个数和内容不变前提下可以使用.reshape_______函数

改变其尺寸和维数;利用_cell_______函数可以定义单元阵列。

6、在MATLAB中,可甫内部函数与工具箱函数产生矩阵,其中如果要产生单位阵可用_eye_____函

数,产生对角阵可用_diag函数,产生均匀分布随机阵可用rand函数。

7、在MATLAB中,将含有小数数值转换成字符串可用num2str命令,在字符串中查找子字符

串可用findstr命令。

二、选择题(每题4分,共20分)

1、设A=[243;531;367],那么sum(A),length(A)和size(A)结果(D)

A.[101311]9[33]B.[9916]3[33]

C.[9916]9[33]D.[101311]3[33]

2、以下关于脚本文件和函数文件描述中不正确是(B)

A.去掉函数文件第一行定义行可转变成脚本文件;

B.函数文件可以在命令窗口直接运行;

C.脚本文件可以调用函数文件;

D.函数文件中第一行必须以function开场;

3、在CommandWindow窗口中分别输入以下命令,对应输出结果错误是C)

A.x=[-3⑵x=[-3-21012]B.x=zeros(l,2);x>0ans=[00]

C.y=diag(eye(3),2).^y=[00]D.3-2*rand(l,2)ans=[1.09972.5377]

4、对于矩阵B,统计其中大于A元素个数,可以使用语句是(B)

A.length(B)-length(find(B<=A))B.sum(sum(B>A))

C.length(sum(B>A))D.sum(length(B>A))

5、strl='find',str2=,fund,,str3=,Ilikeyou',有:k1=sum(str1==str2),k2=sum(strrep(strl,'i','u')==str2),

k3=findstr(str3,,ke,),那么kl,k2,k3结果分别为:(B)

A.3,3,5B.3,4,5C.4,3,5D.3,4,6

三、程序填空(每空2分,共12分)

编写MATLAB程序,用三阶多项式来拟合数据,在同一图形窗口中绘制拟合前和拟合后两条曲线,并

对图形坐标轴进展控制。程序如下:

x=[l,2,3,4,5];y=[5.1,6.2,7.0,8.2,9.3];

p=polyfit(x,y,3)%采用三阶多项式拟合

x2=l:0.1:5;

y2=y2=polyval(p,x2);%拟合后曲线

figure(1)

plot(x,y,,o,,x2,y2);%绘制曲线

ml=max([y,y2]);m2=min([y,y2]);

axis([06m2ml])%用axis调制坐标轴,横坐标在[06]之间,且完全显示图形

_title('多项式曲线拟合');%加上标题“多项式曲线拟合”

编写MATLAB程序,对于用户输入向量或矩阵,计算其平均值:

_x=input('请输入数据\n')或x=input('请输入数据')________%提示输入数据并保

右到x中,命令行显示“请输入数据"

y=reshape(x,l,prod(size(x)));

m=m=mean(y);%计算均值m

四、(8分)为解以下线性方程组,请写出MALAB语言程序。

"4xi+2X3+3X4=9

3X2+2X3+3x4=8

2xi+X4=10

、X3-2X2+3x4=7

A=[4023;0323;200l;0-213;];%3分

b=[98107]';%2分

x=A\b;或x=inv(A)*b;%3分

另一种答案:

A=[4020;030-2;2201;3313];%3分

b=[98107];%2分

x=b/A;或x=b*inv(A);%3分

五、(10分)利用menu函数输入选择参数len,输入菜单名称为“selectannum",根据len取值分别给

变量x赋不同值。当len=l时,x值为值为4行3列全0矩阵;当len=2时,x值为3行4列全为5矩阵;

当len=3时,x值为5行3列均值为0,方差为1正态分布随机矩阵;当len=4时,x值为字符串“notan

array";当len为其它值时,那么显示“Error"。要求使用switch函数。

len=menufselectanum',T,'2','3','4','5');%3分

switchlen%switch语句格式写对2分

y=zeros(4,3);%1分

case2

y=5.*ones(3,4);%1分

case3

y=5+randn(5,3);%1分

y='notanarray';%1分

otherwise

disp('Error')%1分

end

六、(15分)某混合信号有2个不同频率确知信号,加上正态分布随机噪声构成,噪声功率为4,2个确

知信号分别为:M=10sin(2区/;〃//,)、$2=5sin(2乃力〃/工),其中信号频率分别为工=2Hz、f2=5Hz,

采样频率为<=20Hz,采样点128点,即〃=0,1,2,…,127。

编程完成以下内容:

(1)求出信号频谱(用到函数有fft和abs)。

(2)以图形方式比拟信号波形和信号频谱,要求把图形窗口分成2个子窗口,分别画出:时域信号波形

(横坐标为“Time”,纵坐标为“amplitude”,标题为“信号时域与频域波形”)、信号频谱(横坐标

为"frequency(Hz)”,纵坐标为"'frequencyspectral")。

fl=2;f2=5;fs=20;n=0:127;%1分

sl=10*sin(2*pi*fl*n/fs);%1分

s2=5*sin(2*pi*f2*n/fs);%1分

noise=2*randn(size(n));%2分

s=sl+s2+noise;%1分

sj=fft(s);%1分

m_f=abs(s_f);%1分或m_f=abs(fft(s))%2分

f=(O:length(s_f)-l)*fs/length(s_f)或f=n*fs/length(n)%2分

figure(l);

subplot(2,l,l);plot(n,s);%1分

title,信号时域与频域波形)%1分

xlabel('Time');ylabel(1amplitude5);%1分

subplot(2,l,2);plot(f,m_f);%1分

xlabelCfrequency(Hz)^);ylabel(4frequencyspectraf);%1分

七、115分)某宿舍有4名同学期末考试成绩为下表所示:

姓名1name)liweiwangjunliuzhizhanglin

课程英语(eng)85838090

及成物理(phy)75846975

绩数学(math)78927781

计算机83878278

(computer)

编程完成以下内容:

基于表格内容构建构造阵列,构造名为student。

对每名同学成绩按学分加权求出综合测评分。其中eng(英语)、物理(phy)、math(数学)学分分别为3452,

综合测评分计算公式如下:x=-fWiXi,七为课程成绩,叱为相应学分,卬=£叱,〃为成绩个数。

rv1=11=1

基于表格内容构建单元阵列,单元阵列名为student1,单位阵列中每一行保存一个学生信息,包括学生

姓名和学生各门课成绩。通过访问单元阵列,计算每一个学生平均分,将平均分作为一个新域,更新已

经建立单元阵列。

最终得到单元阵列格式为:

姓名成绩平均分

学生

1

2

学3

%构建构造阵列3分,也可用赋值语句逐个赋值

student=struct('name',{'1iwei''wangjun''liuzhi''zhanglin'),...

'eng;{[85757883],'phy'[83849287],'math'[80697782],'computer'[90758178]));

%加权求平均,%7分

w=[3452];

w=w/sum(w);

student_num=length(student);

syn_score=zeros(1,student_num);

fori=l:student_num

syn_score(i)=student(i).eng*w(1)+student(i).phy*w(2)...

+student(i).math*w(3)+student(i)puter*w(4);

end

构建单元阵列%3分

student1={*liwei\[85757883];1wangjun\[83849287];*liuzhi\[80697782];(zhanglin\[907581

78]);

fori=l:length(studentl)

studentl{i,3}-mean(studentl{i,2});%更新正确2分

end

根本知识填空题(每空1分,共20分)

MATLAB通用命令中假设对函数功能和用法不熟悉,可用_help命令;显示变量、阵列或文本时,

可用_disp—命令;去除工作空间中变量时,可用clear_____命令;保存和恢复工作空间,或者工作空

间中论定变量时,可用_save和」oad____命令。

MATLAB系统提供了而个重要部件:simulink和toolboxes,它们在系统和用户编程中,占据重要地位。

在MATLAB中,可用内部函数与工真箱函数产生矩阵,其中如果要产生单位阵可用_eye______函数,

产生全0阵可用_zeros—函数,产生全1阵可用_ones—函数,产生对角阵可用diag—函数。

在MATLAB图形系统中,如果需要给已经绘制好图形加上栅格线,可以使用—gridon—命令,如果

需要在指定坐标位置标注文本时使用函数为_texto

用MATLAB绘制极坐标中图形时可以使用_polar_____函数,绘制条形图时可使用—bar(或barh)函数,

绘制柱状图,用以表示数据值分布情况时才使用hist函数。

MATLAB中用于控制不定次重复循环语句为_while,假设在循环执行过程中需要终止该循环时

采用语句为__break。

对于MATLAB中多维阵列,在保持所有元素个数和内容不变前提下可以使用「eshape_函数改变其尺寸

和维数;利用_cell—函数可以定义单元阵列。

二、选择题(每题4分,共20分)

设A=[l23;345;567;789],那么sum(A),length(A)和size(A)结果(D)

A.[162024]3[43]B.[6121824]3[34]

C.[6121824]4[43]D.[162024]4[43]

设X=[0:0.5*pi:pi],Y=cos(X)且Z=sin(X),那么Y.*Z,Y*Z'和cat(l,Y,Z)结果分别为(A)

A.[000]0[10-l;010]B.[000]0[10-1010]

C.[000][010;000;0-10][10-l;010]

D.[010;000;0-10][000][10-1010]

对于矩阵A,统计其中大于T元素个数,可以使用语句是(C)

A.length(A)-length(find(A<=T))B.length(sum(A>T))

C.sum(sum(A>T))D.sum(length(A>T))

假设多维阵列A=rand(5,5,4),下面对A进展各种不同操作,其中错误是(B)

A.sin(A).*cos(A)B.Al(l)=A

C.sum(A)+length(A)D.Al{2}=num2cell(A)

strl=,sum,,str2=,sun,,str3='XiDian123',有:k1=sum(str1==str2),k2=sum(strrep(strl,,m,,,n,)==str2),

k3=findstr(str3,,an,),那么kl,k2,k3结果分别为:(B)

A.2,2,5B.2,3,5C.3,2,4D.2,3,4

三、程序填空(每空3分,共15分)

编写MATLAB程序,在同一图形窗口中绘制yl和y2两条曲线,并对图形坐标轴进展控制。程序如下:

x=-3:0.1:3;

yl=2*x+5;y2=x.A2-3*x;

plot(x,yl);%绘制曲线yl

①ho1doni%保持曲线y1

plot(x,y2);%绘制曲线y2

ml=max([yl,y2]);m2=min([yl,y2]);

—②axis([-33m2ml]);%用axis调制坐标轴,横坐标在[-3刃之间,且完全显示图形

—③xlabel('时间’);ylabel('幅度');;%参加图形注释,横坐标为“时间”,纵坐标为“幅

度〃编写MATLAB程序,对于用户输入向量或矩阵,计算其平均值和方差:

___④x=input('请输入数据\n')或x=input('请输入数据');%提示输入数据并

保存到x中,命令行显示“请输入数据"

y=reshape(x,1,prod(size(x)));

m=mean(y);%计算均值m

___©v=var(y)或1/(length(y)T)*(sum((y-m).-2));%计算方差v

四、(10分)为解以下线性方程组,请写出MALAB语言程序。

"3Xi+X2+5x4=2

6X2+7X3+3x4=4

4X2+3X3=7

2xi-X2+2X3+6x4=8

A=[3105;0673;0430;2-126;];%3分

b=[2478],;%3分

x=A\b;或x=inv(A)*b或x=pinv(A)*b;%4分

另一种答案:

A=[3002;164-1;0732;5306];%3分

b=[2478];%3分

x=b/A;或x=b*inv(A);%4分

五、(10分)利用menu函数和switch函数编写脚本文件。输入选择ch,当ch=l时,产生[-1,1]之间均

匀分布随机数;ch=2时,产生大小为5x5对角阵,其中每个元素在[0,1]之间均匀分布;当ch=3时,产

生均值为0,方差为1正态随机数;当ch=4时,产生均值为5,方差为4大小为5x5正态随机矩阵;当

ch=5时,直接退出菜单。

ch=menu('selectanum',T,2',3,'4',5);%3分

switchch%switch语句格式写对2分

case1

y=2*rand-l;%1分

case2

y=diag(rand(l,5));%1分

case3

y=randn;%1分

case4

y=5+2*randn(5,5);%1分

case5

return;%1分

end

六、(10分)某宿舍有4名同学,3门课程期末考试成绩如下表所示:

姓名(name)limingwangleiliujunzhangxiao

成绩(score)857578838492806977907581

要求编程完成以下内容:

基于表格内容构建构造阵列,构造名为student。通过访问构造阵列,计算每一个学生平均分,将平均分

作为一个新域,更新已经建立构造阵列。

最终得到构造阵列可表示为

student

.irame

.Jcore

,mean

基于表格内容建立二维单元阵列,单位阵列中每一行保存一个学生信息。通过访问单元阵列,计算每一

个学生平均分,将平均分作为一个新域,更新已经建立单元阵列。

最终得到单元阵列格式为:

姓名成绩平均分

学生

1

2

学3

4

%构建构造阵列3分,也可用赋值语句逐个赋值

student=struct('name',{'liming','wanglei','liujun'/zhangxiao'},—

'score',{[857578],[838492],[806977],[907581]});

fori=1:length(student)

student(i).mean=mean(student(i).score);%更新正确2分

end

%构建单元阵列3分,也可用赋值语句逐个赋值

student1={liming*1,[857578];,wanglei,,[838492];'liujun;[806977];...

7hangxiao,,[907581]};

fori=l:length(studentl)

studentl{i,3}=mean(studentl{i,2});%更新正确2分

end

或者可由struct直接转换到cell

student1=struct2cell(student);%4分

student1=squeeze(studentl);%删除单点维

student1=student1';%结果正确1分

七、(15分)某一过程中通过测量得到:

t0

y

编程完成以下内容:

(1)分别采用三阶和四阶多项式对数据进展拟合;(提示:采用polyfit进展多项式拟合;调用格式为p=

polyfit(t,y,n),n为多项式阶数,p为得到多项式系数)

(2)比拟拟合效果,要求把图形窗口分成两个子窗口,子窗口1绘制出原始测量值和三阶多项式拟合后

曲线,子窗口2绘制出原始测量值和四阶多项式拟合后曲线;

(3)根据时刻点测量值,计算两种拟合方法均方误差(MSEL

1〃

MSE^-Y^-y,)2*,其中%为上面表中原始测量值,力为拟合后估计值。

n,=i

t=[00.81.02.05.0];

y=[1.0-4.0];%1分

pl=polyfit(t,y,3);%1分

p2=polyfit(t,y,4);%1分

x=[0:0.1:5];

yl=polyval(pl,x);%1分

y2=polyval(p2,x);%1分

subplot(1,2,1);%subplot语句格式写对1分

plot(t,y,'or,x,yl);%也可使用holdon命令,正确画出第一个子图2分

subplot(l,2,2);

plot(t,y,,o,,x,y2);%正确画出第二个子图2分

i=intl6(l+t/0.1);%ori二fix(t/O.l)+l;能找到正确估计值位置3分

msel=mean((y-yl(i)).A2);%正确计算均方误差1分

mse2=mean((y-y2(i)).A2);%正确计算均方误差1分

选择题(每题5分,共30分)

1、工作空间workspace中有变量a,b,c,按如下步骤进展操作,(1)将变量a存成数据文件adata.mat,(2)

去除工作区间所有变量,(3)再将数据文件调入工作区间,下面(A)组命令是正确:

Asaveadataa;clear;loadadata;Bsaveadataa-ascii;clear;loadadata;

Csaveadata;clearall;loadadata;Dsaveadata;clearall;load-asciiadata;

2在CommandWindow窗口中分别输入以下命令,对应输出结果正确是(C)

A.j=sqrt(-1)j—1B.x=ones(l,2);x>0ans=l

C.y=diag(eye(2)).9y=[l1]D.rand(l,3)ans=[0.95011.23110.6068]

3、对应MATLAB提供绘制平面曲线、离散序列、三维曲线、三维网格曲线、等高线图函数为(B)

A.plot,stem,mesh,plot3,surfB.plot,stem,plot3,mesh,contour

C.plot,hist,mesh,plot3,contourD.plot,hist,plot3,meshc,contour

4以下对条件语句、分支语句、固定循环次数语句、不定循环次数语句关键字排序正确是(B)

A.ifelseend;forend;switchcaseend;whileend;

B.ifelseend;switchcaseend;fbrend;whileend;

C.forend;ifelseend;whileend;switchcaseend;

D.whileend;fbrend;switchcaseend;ifelseend;

5.在MATLABEditor中输入以下语句:x=[l3;24];y=norm(x(:,2));z=det(x);u=diag(x);v=polyval(u』);运行

后,在CommandWindow中对应y,z,u,v输出结果为(A)

A.5-2[1;4]5B.52[1;2]3C.42[1;2]3D.4-2[1;4]5

6.strl-MatlabisausefulltooF;str2=strtok(str1),stmum=length(str2),

Iogvec=strcmpi(str2,,matlab,),k=findstr(str2,,a,)

以下对变量str2,strnum,logvec,k值描述正确是:D

A'M'10口B.'Matlab'60[25]C.11[]D.'Matlab561[25]

二、程序填空和改错,改错处用箭头标记(每空5分,共20)

抛物线方程为》=以2+”,输入c后,绘制该曲线,寻找曲线最小值和对应x值。小明编写程序如下:

clc;clear;closeall;

c=input(*c-);

a=l;

x=-2:0.1:2;

xnum二length(x)orxnum二size(x,2);%(1)对变量xnum赋为数组x个数

y=zeros(l,xnum);

y=a*x八2+C*XL尸a*x.八2+C*X;_____%(2)按照函数形式对y赋值

figure;

plot(x,y)%(3)绘制曲线

xlabel('x');ylabel(V);

(ymin,Imin]=min(y);

xmin=x(ymin)Lxmin=x(Imin);%(4)找到最小函数值对应x值

三、(10分)A=[l23;456;789],利用menu函数输入选择参数OprNo,OprNo=l时,将A按列向变为9

XI列矢量,记为B;OprNo=2时,将A前两列元素对应相加,得到C为3X1列矢量;OprNo=3时,

求A对角元素之和(提示用trace函数)。

clc;clear;closeall;

A=[l23;456;789];

OprNo=menu(,OprSel71,/2,,,31);

switchOprNo

case1

B=reshape(A,prod(size(A)),1)%2分

case2

0A(:,1)+A(:,2)%2分

case3

D=trace(A)%2分

otherwise

errorC无效操作);%不作要求

end

四、(10分)牛顿迭代法是方程寻根一种方法,考虑〃x)=/+2x-3,方程/(%)=0牛顿迭代公式为

4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论