MATLAB 09年试题加答案.docx
《MATLAB 09年试题加答案.docx》由会员分享,可在线阅读,更多相关《MATLAB 09年试题加答案.docx(21页珍藏版)》请在冰豆网上搜索。
![MATLAB 09年试题加答案.docx](https://file1.bdocx.com/fileroot1/2022-12/12/5c099b99-7428-43f9-8125-bd16640a7518/5c099b99-7428-43f9-8125-bd16640a75181.gif)
MATLAB09年试题加答案
西安电子科技大学
考试时间90分钟
2009年MATLAB语言试题
题号
一
二
三
四
五
六
七
总分
分数
1.考试形式:
闭卷;2.本试卷共七大题,满分100分;3.答案写在试卷上
班级学号姓名任课教师
一、基本知识填空题(每空1分,共20分)
1.MATLAB的通用命令中列出内存中的变量目录可用命令;若对函数功能和用法不熟悉,可用命令;显示变量、阵列或文本时,可用
命令;清除工作空间中的变量时,可用命令;保存和恢复工作空间,或者工作空间中的特定变量时,可用和命令。
2.在MATLAB图形系统中,如果需要给已经绘制好的图形加上栅格线,可以使用命令,如果需要在指定的坐标位置标注文本时使用的函数为,需要绘制多条曲线,保持当前图形窗口可使用命令。
3.用MATLAB绘制条形图时可使用函数,绘制柱状图,用以表示数据值的分布情况时可使用函数。
4.MATLAB中用于控制不定次重复循环语句为,若在循环执行过程中需要终止该循环时采用的语句为。
5.对于MATLAB中的多维阵列,在保持所有元素个数和内容不变的前提下可以使用函数改变其尺寸和维数;利用函数可以定义单元阵列。
6.在MATLAB中,可用内部函数与工具箱函数产生矩阵,其中如果要产生单位阵可用函数,产生对角阵可用函数,产生均匀分布的随机阵可用函数。
7.在MATLAB中,将含有小数的数值转换成字符串可用命令,在字符串中查找子字符串可用命令。
二、选择题(每题4分,共20分)
1.设A=[243;531;367],则sum(A),length(A)和size(A)的结果()
A.[101311]9[33]B.[9916]3[33]
C.[9916]9[33]D.[101311]3[33]
2.下列关于脚本文件和函数文件的描述中不正确的是()
A.去掉函数文件第一行的定义行可转变成脚本文件;
B.函数文件可以在命令窗口直接运行;
C.脚本文件可以调用函数文件;
D.函数文件中的第一行必须以function开始;
3.在CommandWindow窗口中分别输入下列命令,对应输出结果错误的是()
A.x=[-3:
2]x=[-3-21012]B.x=zeros(1,2);x>0ans=[00]
C.y=diag(eye(3),2).’y=[00]D.3-2*rand(1,2)ans=[1.09972.5377]
4.对于矩阵B,统计其中大于A的元素个数,可以使用的语句是()
A.length(B)-length(find(B<=A))B.sum(sum(B>A))
C.length(sum(B>A))D.sum(length(B>A))
5.已知str1=’find’,str2=’fund’,str3=’Ilikeyou’,有:
k1=sum(str1==str2),k2=sum(strrep(str1,’i’,’u’)==str2),k3=findstr(str3,’ke’),则k1,k2,k3的结果分别为:
()
A.3,3,5B.3,4,5C.4,3,5D.3,4,6
三、程序填空(每空2分,共12分)
1.编写MATLAB程序,用三阶多项式来拟合数据,在同一图形窗口中绘制拟合前和拟合后两条曲线,并对图形坐标轴进行控制。
程序如下:
x=[1,2,3,4,5];y=[5.1,6.2,7.0,8.2,9.3];
%采用三阶多项式拟合
x2=1:
0.1:
5;
y2=;%拟合后的曲线
figure
(1)
plot(x,y,’o’,x2,y2);%绘制曲线
m1=max([y,y2]);m2=min([y,y2]);
;%用axis调制坐标轴,横坐标在[06]之间,且完全显示图形
;%加上标题“多项式曲线拟合”
2.编写MATLAB程序,对于用户输入的向量或矩阵,计算其平均值:
%提示输入数据并保存到x中,命令行显示“请输入数据”
y=reshape(x,1,prod(size(x)));
m=;%计算均值m
四、(8分)为解下列线性方程组,请写出MALAB语言程序。
4x1+2x3+3x4=9
3x2+2x3+3x4=8
2x1+x4=10
x3-2x2+3x4=7
五、(10分)利用menu函数输入选择参数len,输入菜单的名称为“selectannum”,根据len的取值分别给变量x赋不同的值。
当len=1时,x的值为的值为4行3列全0矩阵;当len=2时,x的值为3行4列全为5的矩阵;当len=3时,x的值为5行3列均值为0,方差为1的正态分布的随机矩阵;当len=4时,x的值为字符串“notanarray”;当len为其它值时,则显示“Error”。
要求使用switch函数。
六、(15分)某混合信号有2个不同频率的确知信号,加上正态分布的随机噪声构成,噪声功率为4,2个确知信号分别为:
、
,其中信号频率分别为
Hz、
Hz,采样频率为
Hz,采样点128点,即n=0,1,2,…,127。
编程完成以下内容:
(1)求出信号的频谱(用到的函数有fft和abs)。
(2)以图形的方式比较信号波形和信号频谱,要求把图形窗口分成2个子窗口,分别画出:
时域信号波形(横坐标为“Time”,纵坐标为“amplitude”,标题为“信号时域与频域波形”)、信号频谱(横坐标为“frequency(Hz)”,纵坐标为“frequencyspectral”)。
七、(15分)某宿舍有4名同学期末考试的成绩为下表所示:
姓名(name)
liwei
wangjun
liuzhi
zhanglin
课程及成绩
英语(eng)
85
83
80
90
物理(phy)
75
84
69
75
数学(math)
78
92
77
81
计算机(computer)
83
87
82
78
编程完成以下内容:
(1)基于表格内容构建结构阵列,结构名为student。
对每名同学成绩按学分加权求出综合测评分。
其中eng(英语)、物理(phy)、math(数学)的学分分别为3452,综合测评分的计算公式如下:
,
为课程成绩,
为相应的学分,
,n为成绩个数。
(2)基于表格内容构建单元阵列,单元阵列名为student1,单位阵列中每一行保存一个学生的信息,包括学生姓名和学生各门课成绩。
通过访问单元阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的单元阵列。
最终得到的单元阵列格式为:
姓名成绩平均分
学生1
学生2
学生3
学生4
一、基本知识填空题(每空1分,共20分)
1、whoshelpdispclearsaveload
2、gridontextholdon
3、bar(或barh)hist
4、while(whileend)break
5、reshapecell
6、eyediagrand
7、num2strfindstr
二、选择题(每题4分,共20分)
DBCBB
三、程序填空题(每空2分,共12分)
①p=polyfit(x,y,3)
②y2=polyval(p,x2)
③axis([06m2m1])
④title(‘多项式曲线拟合’)
⑤x=input(‘请输入数据\n’)或x=input(‘请输入数据’)
⑤m=mean(y)
四、(8分)
A=[4023;0323;2001;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分)
len=menu('selectanum','1','2','3','4','5');%3分
switchlen%switch语句格式写对2分
case1
y=zeros(4,3);%1分
case2
y=5.*ones(3,4);%1分
case3
y=5+randn(5,3);%1分
case4
y=’notanarray’;%1分
otherwise
disp(‘Error’)%1分
end
六、(15分)
f1=2;f2=5;fs=20;n=0:
127;%1分
s1=10*sin(2*pi*f1*n/fs);%1分
s2=5*sin(2*pi*f2*n/fs);%1分
noise=2*randn(size(n));%2分
s=s1+s2+noise;%1分
s_f=fft(s);%1分
m_f=abs(s_f);%1分或m_f=abs(fft(s))%2分
f=(0:
length(s_f)-1)*fs/length(s_f)或f=n*fs/length(n)%2分
figure
(1);
subplot(2,1,1);plot(n,s);%1分
title(‘信号时域与频域波形’);%1分
xlabel(‘Time’);ylabel(‘amplitude’);%1分
subplot(2,1,2);plot(f,m_f);%1分
xlabel(‘frequency(Hz)’);ylabel(‘frequencyspectral’);%1分
七、(15分)
%构建结构阵列3分,也可用赋值语句逐个赋值
student=struct('name',{'liwei''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=1:
student_num
syn_score(i)=student(i).eng*w
(1)+student(i).phy*w
(2)...
+student(i).math*w(3)+student(i).computer*w(4);
end
构建单元阵列%3分
student1={'liwei',[85757883];'wangjun',[83849287];'liuzhi',[80697782];'zhanglin',[90758178]};
fori=1:
length(student1)
student1{i,3}=mean(student1{i,2});%更新正确2分
end
西安电子科技大学
考试时间90分钟
2009年MATLAB语言试题
题号
一
二
三
四
五
六
七
总分
分数
1.考试形式:
闭卷;2.本试卷共七大题,满分100分;3。
答案全部写在答题纸上。
班级学号姓名任课教师
二、基本知识填空题(每空1分,共20分)
8.MATLAB的通用命令中若对函数功能和用法不熟悉,可用命令;显示变量、阵列或文本时,可用命令;清除工作空间中的变量时,可用命令;保存和恢复工作空间,或者工作空间中的特定变量时,可用和命令。
9.MATLAB系统提供了两个重要部件:
和,它们在系统和用户编程中,占据重要的地位。
10.在MATLAB中,可用内部函数与工具箱函数产生矩阵,其中如果要产生单位阵可用函数,产生全0阵可用函数,产生全1阵可用函数,产生对角阵可用函数。
11.在MATLAB图形系统中,如果需要给已经绘制好的图形加上栅格线,可以使用命令,如果需要在指定的坐标位置标注文本时使用的函数为。
12.用MATLAB绘制极坐标中的图形时可以使用函数,绘制条形图时可使用函数,绘制柱状图,用以表示数据值的分布情况时可使用函数。
13.MATLAB中用于控制不定次重复循环语句为,若在循环执行过程中需要终止该循环时采用的语句为。
14.对于MATLAB中的多维阵列,在保持所有元素个数和内容不变的前提下可以使用函数改变其尺寸和维数;利用函数可以定义单元阵列。
二、选择题(每题4分,共20分)
6.设A=[123;345;567;789],则sum(A),length(A)和size(A)的结果()
A.[162024]3[43]B.[6121824]3[34]
C.[6121824]4[43]D.[162024]4[43]
7.设X=[0:
0.5*pi:
pi],Y=cos(X)且Z=sin(X),那么Y.*Z,Y*Z’和cat(1,Y,Z)的结果分别为()
A.[000]0[10-1;010]B.[000]0[10-1010]
C.[000][010;000;0-10][10-1;010]
D.[010;000;0-10][000][10-1010]
8.对于矩阵A,统计其中大于T的元素个数,可以使用的语句是()
A.length(A)-length(find(A<=T))B.length(sum(A>T))
C.sum(sum(A>T))D.sum(length(A>T))
9.假设多维阵列A=rand(5,5,4),下面对A进行各种不同的操作,其中错误的是()
A.sin(A).*cos(A)B.A1
(1)=A
C.sum(A)+length(A)D.A1{2}=num2cell(A)
10.已知str1=’sum’,str2=’sun’,str3=’XiDian123’,有:
k1=sum(str1==str2),k2=sum(strrep(str1,’m’,’n’)==str2),k3=findstr(str3,’an’),则k1,k2,k3的结果分别为:
()
A.2,2,5B.2,3,5C.3,2,4D.2,3,4
三、程序填空(每空3分,共15分)
3.编写MATLAB程序,在同一图形窗口中绘制y1和y2两条曲线,并对图形坐标轴进行控制。
程序如下:
x=-3:
0.1:
3;
y1=2*x+5;y2=x.^2-3*x;
plot(x,y1);%绘制曲线y1
①;%保持曲线y1
plot(x,y2);%绘制曲线y2
m1=max([y1,y2]);m2=min([y1,y2]);
②;%用axis调制坐标轴,横坐标在[-33]之间,且完全显示图形
③;%加入图形注释,横坐标为“时间”,纵坐标为“幅度”
4.编写MATLAB程序,对于用户输入的向量或矩阵,计算其平均值和方差:
④;%提示输入数据并保存到x中,命令行显示“请输入数据”
y=reshape(x,1,prod(size(x)));
m=mean(y);%计算均值m
⑤;%计算方差v
四、(10分)为解下列线性方程组,请写出MALAB语言程序。
3x1+x2+5x4=2
6x2+7x3+3x4=4
4x2+3x3=7
2x1-x2+2x3+6x4=8
五、(10分)利用menu函数和switch函数编写脚本文件。
输入选择ch,当ch=1时,产生[-1,1]之间均匀分布的随机数;ch=2时,产生大小为5x5的对角阵,其中每个元素在[0,1]之间均匀分布;当ch=3时,产生均值为0,方差为1的正态随机数;当ch=4时,产生均值为5,方差为4的大小为5x5的正态随机矩阵;当ch=5时,直接退出菜单。
六、(10分)某宿舍有4名同学,3门课程的期末考试成绩如下表所示:
姓名(name)
liming
wanglei
liujun
zhangxiao
成绩(score)
857578
838492
806977
907581
要求编程完成以下内容:
(3)基于表格内容构建结构阵列,结构名为student。
通过访问结构阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的结构阵列。
最终得到的结构阵列可表示为
student
.name
.score
.mean
(4)基于表格内容建立二维单元阵列,单位阵列中每一行保存一个学生的信息。
通过访问单元阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的单元阵列。
最终得到的单元阵列格式为:
姓名成绩平均分
学生1
学生2
学生3
学生4
七、(15分)某一过程中通过测量得到:
t
0
0.2
0.4
0.6
0.8
1.0
2.0
5.0
y
1.0
1.5
1.9
2.1
2.3
2.4
2.6
-4.0
编程完成以下内容:
(1)分别采用三阶和四阶多项式对数据进行拟合;(提示:
采用polyfit进行多项式拟合;调用格式为p=polyfit(t,y,n),n为多项式阶数,p为得到的多项式系数)
(2)比较拟合效果,要求把图形窗口分成两个子窗口,子窗口1绘制出原始测量值和三阶多项式拟合后的曲线,子窗口2绘制出原始测量值和四阶多项式拟合后的曲线;
(3)根据已知时刻点的测量值,计算两种拟合方法的均方误差(MSE)。
,其中
为上面表中的原始测量值,
为拟合后的估计值。
四、基本知识填空题(每空1分,共20分)
1、helpdispclearsaveload
2、simulinktoolboxes
3、eyezerosonesdiag
4、gridontext
5、polarbar(或barh)hist
6、whilebreak
7、reshapecell
五、选择题(每题4分,共20分)
DACBB
六、程序填空题(每空3分,共15分)
①holdon
②axis([-33m2m1])
③xlabel(‘时间’);ylabel(‘幅度’);
④x=input(‘请输入数据\n’)或x=input(‘请输入数据’)
⑤v=var(y)或1/(length(y)-1)*(sum((y-m).^2))
四、(10分)
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分)
ch=menu('selectanum','1','2','3','4','5');%3分
switchch%switch语句格式写对2分
case1
y=2*rand-1;%1分
case2
y=diag(rand(1,5));%1分
case3
y=randn;%1分
case4
y=5+2*randn(5,5);%1分
case5
return;%1分
end
六、(10分)
%构建结构阵列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',[857578];'wanglei',[838492];'liujun',[806977];...
'zhangxiao',[907581]};
fori=1:
length(student1)
student1{i,3}=mean(student1{i,2});%更新正确2分
end
或者可由struct直接转换到cell
student1=struct2cell(student);%4分
student1=squeeze(student1);%删除单点维
student1=student1';%结果正确1分
七、(15分)
t=[00.20.40.60.81.02.05.0];
y=[1.01.51.92.12.32.42.6-4.0];%1分
p1=polyfit(t,y,3);%1分
p2=polyfit(t,y,4);%1分
x=[0:
0.1:
5];
y1=polyval(p1,x);%1分
y2=polyval(p2,x);%1分
subplot(1,2,1);%subplot语句格式写对1分
plot(t,y,'o',x,y1);%也可使用holdon命令,正确画出第一个子图2分
subplot(1,2,2);
plot(t,y,'o',x,y2);%正确画出第二个子图2分
i=int16(1