武漢輕工大學MATLAB期末考試試卷匯總_第1頁
武漢輕工大學MATLAB期末考試試卷匯總_第2頁
武漢輕工大學MATLAB期末考試試卷匯總_第3頁
武漢輕工大學MATLAB期末考試試卷匯總_第4頁
武漢輕工大學MATLAB期末考試試卷匯總_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

MATLAB期末考試試卷及其參考答案

一、填空題〔每空1分,20分)

1、MATLAB常用操作界面包括命令窗口、工作空間窗口(瀏覽器)、命令歷史窗口、當前目錄窗口、內(nèi)存數(shù)組編輯器、

M文件編輯/調(diào)試器、幫助導航/瀏覽器、圖形窗口等。

2,MATLABInf或inf表示無窮大、NaN或nan表示不是一個數(shù)、nargout表示函數(shù)輸出宗量數(shù)目。

3、MATLAB中逗號主要用作要顯示計算結(jié)果指令與其后指令分隔;用作輸入量與輸入量之間分隔符;用作數(shù)組元素

分隔符號。

4、工作空間瀏覽器主要用于內(nèi)存變量查閱、保存和編輯。

5、MATLAB實現(xiàn)將全下標轉(zhuǎn)換為單下標指令為Sub2ind、據(jù)單下標換算出全下標指令為Ind2sub。

6、二維數(shù)組標識有“全下標”標識、"單下標”標識、"邏輯1”標識。

7、在一個元胞數(shù)組A中尋訪第2行第3列元胞元素用A(2,3);尋訪數(shù)組第2行第3列元胞中內(nèi)容用A{2,3}。

8、MATLAB中elf用于去除圖形窗、clc用于去除指令窗中顯示內(nèi)容、clear用于去除MATLAB工作空間中保存變量。

二、簡答題(每題5分,共20分)

簡述MATLAB歷史指令窗主要作用。

歷史指令窗記錄著用戶在MATLAB指令窗中所輸入過所有指令。歷史記錄包括:每次開啟MATLAB時間,每次

開啟MATLAB后在指令窗中運行過所有指令。應用功能有單行或多行指令復制和運行、生成M文件等。

2、簡述空數(shù)組功用。

“空”數(shù)組功用:在沒有“空”數(shù)組參與運算時,計算結(jié)果中“空〃可以合理地解釋“所得結(jié)果含義”;運用"空”數(shù)

組對其他非空數(shù)組賦值,可以改變數(shù)組大小,但不能改變數(shù)組維數(shù)。

3、簡述MATLAB函數(shù)根本構造。

典型M函數(shù)文件構造:函數(shù)申明(定義)行(Functiondeclarationline)、HI行(Thefirsthelptextline)、在線幫助文

本(Helptext)區(qū)、編寫和修改記錄、函數(shù)體(Functionbody)。

4、簡述繪制二維圖形一般步驟。

繪制二維圖形一般步驟為:曲線數(shù)據(jù)準備、選定圖形窗及子圖位置、調(diào)用二維曲線繪圖指令、設置軸范圍、坐標

分格線、圖形注釋、圖形精細操作。

三、閱讀程序并答復以下問題(每題4分,共28分)

1、寫出以下指令運行結(jié)果.

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、寫出以下指令運行結(jié)果。

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、寫出以下指令運行結(jié)果。

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、下面函數(shù)主要完成什么功能?

functionf=factor(n)

ifn<=1

f=l;

else

f=factor(n-l)*n;

end

利用函數(shù)遞歸調(diào)用,求n!。

5、寫出以下指令運行結(jié)果。

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、寫出以下指令運行結(jié)果。

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、在同一個圖中繪制兩個函數(shù),這兩個函數(shù)分別是:

y=e("3)

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

其中y是用紅色細實線,而y0是用蘭色虛線繪制,t區(qū)間是(0:4兀),t步長為冗/50,t軸和y軸分別用斜粗題指示,圖中

有網(wǎng)格表示。

四、編程題(32分)

I、I、在同一圖上分別用紅色實線和綠色虛線繪制yl=sin(x)和y2=cos(x)在區(qū)間[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、編寫程序?qū)崿F(xiàn)f(n)=f(n-l)+f(n-2)(f(l)=l和f(2)=2)函數(shù)。(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.從鍵盤上,連續(xù)輸入N個學生情況,分別將這些學生情況填入到相應域,假設域中沒有值即為空或0并計算平均

成績寫入到平均值域。(4分)

C.根據(jù)平均值排序,并輸出學生姓名、學號和平均成績。(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];寫出以下各指令運行結(jié)果。

A&B運行結(jié)果ans=;

A./B運行結(jié)果ans=。

2.產(chǎn)生4階全0方陣命令為zeros(4);產(chǎn)生3階全1方陣命令為ones(3)。

3.A=rand(2,5);b=size(A);c=length(A);那么b和c值分另為和[2,5],[5]。

4.標點符號分號可以使命令行不顯示運算結(jié)果,百分號用來表示該行為注釋行。

5.用if判斷語句判斷802x〉60,在MATLAB中if語言后判斷應寫為if

x〈=80&x〉60。

6.P,Q分別是個多項式系數(shù)矢量,求P對應多項式積分(對應常數(shù)項為K),使用命令

是polyint(P,K);求P/Q解,商和余數(shù)分別保存在k和r,使用命令是

[k,r]=deconv(P,Q)_;

7.為了使兩個plot圖形在同一個坐標顯示,可以使用holdon命令進展圖形保持:

可以使用gridon命令為圖形添加網(wǎng)格。

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.在循環(huán)構造中跳出循環(huán),執(zhí)行循環(huán)后面代碼命令為B

(A)return(B)break(C)continue(D)keyboard

4.清空Matlab工作空間內(nèi)所有變量指令是C

(A)clc(B)cis(C)clear(D)elf

5.用round函數(shù)四舍五入對數(shù)組[2.486.393.938.52]取整,結(jié)果為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],計算其正弦函數(shù)運算為2

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

8.下面程序執(zhí)行后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);程序執(zhí)行后;a,b,c值分別是多少?

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

(D)

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

三、寫出程序執(zhí)行結(jié)果或?qū)懗鼋o定要求指令(總共35分)

1.寫出執(zhí)行以下代碼后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.寫出執(zhí)行以下代碼后,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.創(chuàng)立符號函數(shù)并求解,要求寫出步驟和運行結(jié)果(7分)

(1)創(chuàng)立符號函數(shù)f=ax2+bx+c

⑵求f=0解

4.求解以下線性方程組,要求寫出程序代碼和運行結(jié)果(5分)

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

x1+3x2+x4=6

xl-x2+x3+8x4=l

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

5.繪制函數(shù)曲線,要求寫出程序代碼(12分)

⑴在區(qū)間[0:2均勻取50個點,構成向量n

(2)在同一窗口繪制曲線yl=sin(2*t-0.3);y2=3cos(t+0.5);要求yl曲線為紅色點劃線,標記點

為圓圈;y2為藍色虛線,標記點為星號

四、使用MATLAB語言進展編程(15分)

打印出所有水仙花數(shù)。所謂“水仙花數(shù)”,是指一個三位數(shù),其各位數(shù)字立方之和等于該數(shù)本身。

一、填空題

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

三、寫出程序執(zhí)行結(jié)果或?qū)懗鼋o定要求指令

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通用命令中列出內(nèi)存中變量目錄可用_whos命令;假設對函數(shù)功能和用法不熟悉,

可用_help命令;顯示變量、陣列或文本時,可用_disp命令;去除工作空間中變量時,可

用一clear命令;保存和恢復工作空間,或者工作空間中特定變量時,可用_save和」oad

命令。

2、在MATLAB圖形系統(tǒng)中,如果需要給已經(jīng)繪制好圖形加上柵格線,可以使用_gridon__________命

令,如果需要在指定坐標位置標注文本時使用函數(shù)為text,需要繪制3條曲線,保持當前圖

形窗口可使用_holdon命令。

3、用MATLAB繪制條形圖時可使用_bar(或barhj_________函數(shù),繪制柱狀圖,用以表示數(shù)據(jù)值分布情

況時可使用_hist函數(shù)。

4、MATLAB中用于控制不定次重復循環(huán)語句為while(whileend),假設在循環(huán)執(zhí)行過程中需

要終止該循環(huán)時采用語句為break。

5、對于MATLAB中多維陣列,在保持所有元素個數(shù)和內(nèi)容不變前提下可以使用.reshape_______函數(shù)

改變其尺寸和維數(shù);利用_cell_______函數(shù)可以定義單元陣列。

6、在MATLAB中,可甫內(nèi)部函數(shù)與工具箱函數(shù)產(chǎn)生矩陣,其中如果要產(chǎn)生單位陣可用_eye_____函

數(shù),產(chǎn)生對角陣可用_diag函數(shù),產(chǎn)生均勻分布隨機陣可用rand函數(shù)。

7、在MATLAB中,將含有小數(shù)數(shù)值轉(zhuǎn)換成字符串可用num2str命令,在字符串中查找子字符

串可用findstr命令。

二、選擇題(每題4分,共20分)

1、設A=[243;531;367],那么sum(A),length(A)和size(A)結(jié)果(D)

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

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

2、以下關于腳本文件和函數(shù)文件描述中不正確是(B)

A.去掉函數(shù)文件第一行定義行可轉(zhuǎn)變成腳本文件;

B.函數(shù)文件可以在命令窗口直接運行;

C.腳本文件可以調(diào)用函數(shù)文件;

D.函數(shù)文件中第一行必須以function開場;

3、在CommandWindow窗口中分別輸入以下命令,對應輸出結(jié)果錯誤是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,統(tǒng)計其中大于A元素個數(shù),可以使用語句是(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結(jié)果分別為:(B)

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

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

編寫MATLAB程序,用三階多項式來擬合數(shù)據(jù),在同一圖形窗口中繪制擬合前和擬合后兩條曲線,并

對圖形坐標軸進展控制。程序如下:

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調(diào)制坐標軸,橫坐標在[06]之間,且完全顯示圖形

_title('多項式曲線擬合');%加上標題“多項式曲線擬合”

編寫MATLAB程序,對于用戶輸入向量或矩陣,計算其平均值:

_x=input('請輸入數(shù)據(jù)\n')或x=input('請輸入數(shù)據(jù)')________%提示輸入數(shù)據(jù)并保

右到x中,命令行顯示“請輸入數(shù)據(jù)"

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函數(shù)輸入選擇參數(shù)len,輸入菜單名稱為“selectannum",根據(jù)len取值分別給

變量x賦不同值。當len=l時,x值為值為4行3列全0矩陣;當len=2時,x值為3行4列全為5矩陣;

當len=3時,x值為5行3列均值為0,方差為1正態(tài)分布隨機矩陣;當len=4時,x值為字符串“notan

array";當len為其它值時,那么顯示“Error"。要求使用switch函數(shù)。

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個不同頻率確知信號,加上正態(tài)分布隨機噪聲構成,噪聲功率為4,2個確

知信號分別為:M=10sin(2區(qū)/;〃//,)、$2=5sin(2乃力〃/工),其中信號頻率分別為工=2Hz、f2=5Hz,

采樣頻率為<=20Hz,采樣點128點,即〃=0,1,2,…,127。

編程完成以下內(nèi)容:

(1)求出信號頻譜(用到函數(shù)有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名同學期末考試成績?yōu)橄卤硭荆?/p>

姓名1name)liweiwangjunliuzhizhanglin

課程英語(eng)85838090

及成物理(phy)75846975

績數(shù)學(math)78927781

計算機83878278

(computer)

編程完成以下內(nèi)容:

基于表格內(nèi)容構建構造陣列,構造名為student。

對每名同學成績按學分加權求出綜合測評分。其中eng(英語)、物理(phy)、math(數(shù)學)學分分別為3452,

綜合測評分計算公式如下:x=-fWiXi,七為課程成績,叱為相應學分,卬=£叱,〃為成績個數(shù)。

rv1=11=1

基于表格內(nèi)容構建單元陣列,單元陣列名為student1,單位陣列中每一行保存一個學生信息,包括學生

姓名和學生各門課成績。通過訪問單元陣列,計算每一個學生平均分,將平均分作為一個新域,更新已

經(jīng)建立單元陣列。

最終得到單元陣列格式為:

姓名成績平均分

學生

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通用命令中假設對函數(shù)功能和用法不熟悉,可用_help命令;顯示變量、陣列或文本時,

可用_disp—命令;去除工作空間中變量時,可用clear_____命令;保存和恢復工作空間,或者工作空

間中論定變量時,可用_save和」oad____命令。

MATLAB系統(tǒng)提供了而個重要部件:simulink和toolboxes,它們在系統(tǒng)和用戶編程中,占據(jù)重要地位。

在MATLAB中,可用內(nèi)部函數(shù)與工真箱函數(shù)產(chǎn)生矩陣,其中如果要產(chǎn)生單位陣可用_eye______函數(shù),

產(chǎn)生全0陣可用_zeros—函數(shù),產(chǎn)生全1陣可用_ones—函數(shù),產(chǎn)生對角陣可用diag—函數(shù)。

在MATLAB圖形系統(tǒng)中,如果需要給已經(jīng)繪制好圖形加上柵格線,可以使用—gridon—命令,如果

需要在指定坐標位置標注文本時使用函數(shù)為_texto

用MATLAB繪制極坐標中圖形時可以使用_polar_____函數(shù),繪制條形圖時可使用—bar(或barh)函數(shù),

繪制柱狀圖,用以表示數(shù)據(jù)值分布情況時才使用hist函數(shù)。

MATLAB中用于控制不定次重復循環(huán)語句為_while,假設在循環(huán)執(zhí)行過程中需要終止該循環(huán)時

采用語句為__break。

對于MATLAB中多維陣列,在保持所有元素個數(shù)和內(nèi)容不變前提下可以使用「eshape_函數(shù)改變其尺寸

和維數(shù);利用_cell—函數(shù)可以定義單元陣列。

二、選擇題(每題4分,共20分)

設A=[l23;345;567;789],那么sum(A),length(A)和size(A)結(jié)果(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)結(jié)果分別為(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ǒng)計其中大于T元素個數(shù),可以使用語句是(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結(jié)果分別為:(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調(diào)制坐標軸,橫坐標在[-3刃之間,且完全顯示圖形

—③xlabel('時間’);ylabel('幅度');;%參加圖形注釋,橫坐標為“時間”,縱坐標為“幅

度〃編寫MATLAB程序,對于用戶輸入向量或矩陣,計算其平均值和方差:

___④x=input('請輸入數(shù)據(jù)\n')或x=input('請輸入數(shù)據(jù)');%提示輸入數(shù)據(jù)并

保存到x中,命令行顯示“請輸入數(shù)據(jù)"

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函數(shù)和switch函數(shù)編寫腳本文件。輸入選擇ch,當ch=l時,產(chǎn)生[-1,1]之間均

勻分布隨機數(shù);ch=2時,產(chǎn)生大小為5x5對角陣,其中每個元素在[0,1]之間均勻分布;當ch=3時,產(chǎn)

生均值為0,方差為1正態(tài)隨機數(shù);當ch=4時,產(chǎn)生均值為5,方差為4大小為5x5正態(tài)隨機矩陣;當

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門課程期末考試成績?nèi)缦卤硭?

姓名(name)limingwangleiliujunzhangxiao

成績(score)857578838492806977907581

要求編程完成以下內(nèi)容:

基于表格內(nèi)容構建構造陣列,構造名為student。通過訪問構造陣列,計算每一個學生平均分,將平均分

作為一個新域,更新已經(jīng)建立構造陣列。

最終得到構造陣列可表示為

student

.irame

.Jcore

,mean

基于表格內(nèi)容建立二維單元陣列,單位陣列中每一行保存一個學生信息。通過訪問單元陣列,計算每一

個學生平均分,將平均分作為一個新域,更新已經(jīng)建立單元陣列。

最終得到單元陣列格式為:

姓名成績平均分

學生

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直接轉(zhuǎn)換到cell

student1=struct2cell(student);%4分

student1=squeeze(studentl);%刪除單點維

student1=student1';%結(jié)果正確1分

七、(15分)某一過程中通過測量得到:

t0

y

編程完成以下內(nèi)容:

(1)分別采用三階和四階多項式對數(shù)據(jù)進展擬合;(提示:采用polyfit進展多項式擬合;調(diào)用格式為p=

polyfit(t,y,n),n為多項式階數(shù),p為得到多項式系數(shù))

(2)比擬擬合效果,要求把圖形窗口分成兩個子窗口,子窗口1繪制出原始測量值和三階多項式擬合后

曲線,子窗口2繪制出原始測量值和四階多項式擬合后曲線;

(3)根據(jù)時刻點測量值,計算兩種擬合方法均方誤差(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存成數(shù)據(jù)文件adata.mat,(2)

去除工作區(qū)間所有變量,(3)再將數(shù)據(jù)文件調(diào)入工作區(qū)間,下面(A)組命令是正確:

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

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

2在CommandWindow窗口中分別輸入以下命令,對應輸出結(jié)果正確是(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提供繪制平面曲線、離散序列、三維曲線、三維網(wǎng)格曲線、等高線圖函數(shù)為(B)

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

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

4以下對條件語句、分支語句、固定循環(huán)次數(shù)語句、不定循環(huán)次數(shù)語句關鍵字排序正確是(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輸出結(jié)果為(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賦為數(shù)組x個數(shù)

y=zeros(l,xnum);

y=a*x八2+C*XL尸a*x.八2+C*X;_____%(2)按照函數(shù)形式對y賦值

figure;

plot(x,y)%(3)繪制曲線

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

(ymin,Imin]=min(y);

xmin=x(ymin)Lxmin=x(Imin);%(4)找到最小函數(shù)值對應x值

三、(10分)A=[l23;456;789],利用menu函數(shù)輸入選擇參數(shù)OprNo,OprNo=l時,將A按列向變?yōu)?

XI列矢量,記為B;OprNo=2時,將A前兩列元素對應相加,得到C為3X1列矢量;OprNo=3時,

求A對角元素之和(提示用trace函數(shù))。

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論