matlab考试题答案2007年

matlab考试题答案2007年
matlab考试题答案2007年

MATLAB语言2007年笔试考试答案

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

1、A C B B A D

二、程序填空和改错(每空5分,共20)

抛物线的方程为2

=+,输入c后,绘制该曲线,寻找曲线的最小值

y ax cx

和对应的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值

三、

clc;clear;close all;

A=[1 2 3;4 5 6;7 8 9];

OprNo=menu('OprSel','1','2','3'); %生成菜单,3分,标题可任意取名

switch OprNo %也可用if esleif end

第2页共4页

case 1

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

case 2

C=A(:,1)+A(:,2) %2分

case 3

D=trace(A) %2分

otherwise

error('无效操作'); %不作要求

end

四、

function y=NewtonEqu(x)

y=x-(x^2+2*x-3)/(2*x+2); %函数定义,2分

clc;clear;close all;

x0=0;

x1=NewtonEqu(x0);

err=1e-4

k=1;

xrec=[x0 x1];

while and(abs(x1-x0)>err,k<=100) %使用不定循环,4分,条件正确2分

%或者使用固定100次的for循环,满足条件就break退出

x0=x1;

x1=NewtonEqu(x0); %循环条件更新2分,

k=k+1;

xrec=[xrec x1]; %记录每次迭代的x不作要求

end

k

x1

五、

clc;clear;close all;

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

Student=struct('Name',{'xiaoming' 'xiaohong' 'xiaojun'},...

'Gym',{85 75 95},'Eng',{90 95 80},'Phy',{93 80 85},'Math',{88 90 70});

%加权求平均,并排序,7分

w=[1 2 3 2.5];

w=w/sum(w);

StuNum=length(Student);

SynScore=zeros(1,StuNum);

for i=1:StuNum

SynScore(i)=Student(i).Gym*w(1)+Student(i).Eng*w(2)...

+Student(i).Phy*w(3)+Student(i).Math*w(4);

end

[SynScore,I]=sort(SynScore);%从小到大排序

%显示结果,3分

disp(['Name',' ','Score']);%使用sprintf控制格式也可

for i=1:StuNum

disp([Student(I(i)).Name,' ',num2str(SynScore(i))]);

end

六、

clc;clear;close all;

第4页共4页%输入题设条件,3分

Us=10;

f0=2;

fs=10;

snap_num=256;

R1=2;R2=4;R3=4;R4=4;R5=2;R6=12;R7=12;

%构建AU=b矩阵方程,5分

a11=1/R3+1/R7+1/(R1+R2);a12=-1/R3;

a21=1/R3;a22=-1/R3-1/(R4+R5)-1/R6;

A=[a11 a12;a21 a22];

b=[Us/(R1+R2);0];

%求Uab以及写出Ub正弦电压形式,3分

U=A\b;

Uab=U(1)-U(2);

Uab

Ub=U(2);

Ub_sin=Ub*sin(2*pi*f0*[0:snap_num-1]/fs);

%作FFT,绘制分图,4分,不要求学生写出时间序列和频率序列fseq=[0:snap_num-1]*fs/snap_num;

subplot(2,1,1);plot([0:snap_num-1],Ub_sin);

xlabel('t(s)');ylabel('Uc(V)')

subplot(2,1,2);plot(fseq,abs(fft(Ub_sin)));

xlabel('f(Hz)');ylabel('Frequency Magnitude');

相关主题
相关文档
最新文档