MATLAB - - - 09年试题加答案 下载本文

西安电子科技大学

考试时间 90 分钟

2009年MATLAB语言试题

题号 一 二 三 四 五 六 七 分数 总分 1.考试形式:闭卷;2.本试卷共 七 大题,满分100分;3.答案写在试卷上

班级 学号 姓名 任课教师

一、基本知识填空题(每空1分,共20分)

1. MATLAB的通用命令中列出内存中的变量目录可用 whos 命令;若对函数功能和用法不熟悉,可用 help 命令;显示变量、阵列或文本时,可用 disp 命令;清除工作空间中的变量时,可用 clear 命令;保存和恢复工作空间,或者工作空间中的特定变量时,可用 save 和 load 命令。

2. 在MATLAB图形系统中,如果需要给已经绘制好的图形加上栅格线,可以

使用 grid on 命令,如果需要在指定的坐标位置标注文本时使用的函数为 text ,需要绘制多条曲线,保持当前图形窗口可使用 hold on 命令。 3. 用MATLAB绘制条形图时可使用 bar(barh) 函数,绘制柱状图,用以表示数据值的分布情况时可使用 hist 函数。 4. MATLAB中用于控制不定次重复循环语句为 while(while end) ,若在循环执行过程中需要终止该循环时采用的语句为 break 。 5. 对于MATLAB中的多维阵列,在保持所有元素个数和内容不变的前提下可以使用 reshape 函数改变其尺寸和维数;利用 cell 函数可以定义单元阵列。

6. 在MATLAB中,可用内部函数与工具箱函数产生矩阵,其中如果要产生单位阵可用 eye 函数,产生对角阵可用 diag 函数,产生均匀分布的随机阵可用 rand 函数。 在MATLAB中,将含有小数的数值转换成字符串可用 num2str 命令,在字符串中查找子字符串可用 findstr 命令.

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

1. 设A=[2 4 3; 5 3 1; 3 6 7],则sum(A),length(A)和size(A)的结果( D ) A. [10 13 11] 9 [3 3] B. [9 9 16] 3 [3 3] C. [9 9 16] 9 [3 3] D. [10 13 11] 3 [3 3] 2. 下列关于脚本文件和函数文件的描述中不正确的是( B ) A. 去掉函数文件第一行的定义行可转变成脚本文件; B. 函数文件可以在命令窗口直接运行; C. 脚本文件可以调用函数文件;

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

3. 在Command Window窗口中分别输入下列命令,对应输出结果错-误的是

( C )

A. x=[-3:2] x=[-3 -2 -1 0 1 2] B. x=zeros(1,2);x>0 ans=[0 0]

C. y=diag(eye(3),2).? y=[0 0]true :y=0 D. 3-2*rand(1,2) ans=[1.0997 2.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. 已知str1=?find?, str2=?fund?, str3=?I like you?,有:k1=sum(str1==str2),

k2=sum(strrep(str1,?i?,?u?)==str2), k3=findstr(str3,?ke?), 则k1,k2,k3的结果分别为:( B )

A. 3, 3, 5 B. 3, 4, 5 C. 4, 3, 5 D. 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调制坐标轴,横坐标在[0 6]之间,且完全显示图形 ; %加上标题“多项式曲线拟合”

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

% 提示输入数据并保存到x中,命令行显示“请输入数据”

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

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

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

4 x1 +2 x3 +3 x4 = 9 3 x2 +2 x3 + 3x4 = 8 2 x1 + x4 = 10 x3 -2 x2 + 3x4 =7

[x1,x2,x3,x4]=solve(?4*x1+2*x3+3*x4-9?,?3*x2+2*x3+3*x4-8?,?2*x1+x4-10?,?x3-2*x2+3*x4-7?) 五、(10分) 利用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函数。 Switch(len) Case len=1

六、(15分)某混合信号有2个不同频率的确知信号,加上正态分布的随机噪声构成,噪声功率为4,2个确知信号分别为:s1?10sin(2?f1n/fs)、

s2?5sin(2?f2n/fs),其中信号频率分别为f1?2Hz、f2?5Hz,采样频率为

fs?20Hz,采样点128点,即n=0,1,2,…,127。

编程完成以下内容: (1) 求出信号的频谱(用到的函数有fft和abs)。

(2) 以图形的方式比较信号波形和信号频谱,要求把图形窗口分成2个子窗口,分别画出:时域信号波形(横坐标为 “Time”,纵坐标为 “amplitude”,标题为 “信号时域与频域波形”)、信号频谱(横坐标为 “frequency(Hz)”,纵坐标为 “frequency spectral”)。 七、(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(数

1n学)的学分分别为3 4 5 2,综合测评分的计算公式如下:x??wixi,xi为课程

wi?1成绩,wi为相应的学分,w??wi,n为成绩个数。

i?1n(2) 基于表格内容构建单元阵列,单元阵列名为student1,单位阵列中每一行保存一个学生的信息,包括学生姓名和学生各门课成绩。通过访问单元阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的单元阵列。

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

姓名 成绩 平均分 学生1 学生2 学生3 学生4

一、 基本知识填空题(每空1分,共20分)

1、whos help disp clear save load 2、grid on text hold on 3、bar(或barh) hist

4、while(while end) break 5、reshape cell

6、eye diag rand 7、num2str findstr 二、

选择题(每题4分,共20分) D B C B B 三、

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

① p=polyfit(x,y,3) ② y2=polyval(p,x2) ③ axis([0 6 m2 m1])

④ title(‘多项式曲线拟合’)

⑤ x = input(‘请输入数据 \\n’) 或 x = input(‘请输入数据’) ⑤ m = mean(y) 四、(8分)

A=[4 0 2 3; 0 3 2 3; 2 0 0 1; 0 -2 1 3;]; %3分 b=[9 8 10 7]'; %2分 x=A\\b; 或x=inv(A)*b; %3分

另一种答案:

A=[4 0 2 0;0 3 0 -2; 2 2 0 1; 3 3 1 3]; %3分 b=[9 8 10 7]; %2分 x=b/A;或x=b*inv(A); %3分

五、(10分)

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

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

成,噪声功率为4,2个确知信号分别为:s1?10sin(2?f1n/fs)、

s2?5sin(2?f2n/fs),其中信号频率分别为f1?2Hz、f2?5Hz,采样频率为

fs?20Hz,采样点128点,即n=0,1,2,…,127。

编程完成以下内容: (1) 求出信号的频谱(用到的函数有fft和abs)。

(2) 以图形的方式比较信号波形和信号频谱,要求把图形窗口分成2个子窗口,分别画出:时域信号波形(横坐标为 “Time”,纵坐标为 “amplitude”,标题为 “信号时域与频域波形”)、信号频谱(横坐标为 “frequency(Hz)”,纵坐标为 “frequency spectral”)。 六、(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(?frequency spectral?); %1分

七、(15分)

% 构建结构阵列3分,也可用赋值语句逐个赋值 student=struct('name',{'liwei' 'wangjun' 'liuzhi' 'zhanglin'},...

'eng',{[85 75 78 83], 'phy' [83 84 92 87], 'math' [80 69 77 82], 'computer' [90 75 81 78] });

%加权求平均,%7分

w=[3 4 5 2]; w=w/sum(w);

student_num=length(student); syn_score=zeros(1,student_num); for i=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 ', [85 75 78 83]; ' wangjun ', [83 84 92 87]; ' liuzhi ', [80 69 77 82]; 'zhanglin ', [90 75 81 78]}; for i=1: length(student1)

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

西安电子科技大学

考试时间 90 分钟

2009年MATLAB语言试题

题号 一 二 三 四 五 六 七 分数 总分 1.考试形式:闭卷;2.本试卷共 七 大题,满分100分;3。答案全部写在答题纸上。 班级 学号 姓名 任课教师

二、基本知识填空题(每空1分,共20分)

7. MATLAB的通用命令中若对函数功能和用法不熟悉,可用 命令;显示变量、阵列或文本时,可用 命令;清除工作空间中的变量时,可用 命令;保存和恢复工作空间,或者工作空间中的特定变量时,可用 和 命令。

8. MATLAB系统提供了两个重要部件: 和 ,它们在系统和用户编程中,占据重要的地位。

9. 在MATLAB中,可用内部函数与工具箱函数产生矩阵,其中如果要产生单

位阵可用 函数,产生全0阵可用 函数,产生全1阵可用 函数,产生对角阵可用 函数。 10. 在MATLAB图形系统中,如果需要给已经绘制好的图形加上栅格线,可以

使用 命令,如果需要在指定的坐标位置标注文本时使用的函数为 。

11. 用MATLAB绘制极坐标中的图形时可以使用 函数,绘制条形图

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

12. MATLAB中用于控制不定次重复循环语句为 ,若在循环执行过程

中需要终止该循环时采用的语句为 。

13. 对于MATLAB中的多维阵列,在保持所有元素个数和内容不变的前提下可

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

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

6. 设A=[1 2 3; 3 4 5; 5 6 7; 7 8 9],则sum(A),length(A)和size(A)的结果( ) A. [16 20 24] 3 [4 3] B. [6 12 18 24] 3 [3 4] C. [6 12 18 24] 4 [4 3] D. [16 20 24] 4 [4 3] 7. 设X=[0:0.5*pi:pi], Y=cos(X)且Z=sin(X),那么Y.*Z, Y*Z?和cat(1,Y,Z)的结果

分别为( )

A. [0 0 0] 0 [1 0 -1; 0 1 0] B. [0 0 0] 0 [1 0 -1 0 1 0] C. [0 0 0] [0 1 0; 0 0 0; 0 -1 0] [1 0 -1; 0 1 0] D. [0 1 0; 0 0 0; 0 -1 0] [0 0 0] [1 0 -1 0 1 0]

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=?XiDian 123?,有:k1=sum(str1==str2),

k2=sum(strrep(str1,?m?,?n?)==str2), k3=findstr(str3,?an?), 则k1,k2,k3的结果分别为:( )

A. 2, 2, 5 B. 2, 3, 5 C. 3, 2, 4 D. 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调制坐标轴,横坐标在[-3 3]之间,且完全显示图形 ③ ; %加入图形注释,横坐标为“时间”,纵坐标为“幅度”

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

④ ; % 提示输入数据并保存到x中,命令行显示“请输入数据”

y = reshape(x,1, prod(size(x))); m = mean(y); % 计算均值m ⑤ ; % 计算方差v

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

3 x1 + x2 + 5x4 = 2 6 x2 +7 x3 + 3x4 = 4 4 x2 +3 x3 = 7

2x1 - x2 + 2 x3 + 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) 85 75 78 83 84 92 80 69 77 90 75 81 要求编程完成以下内容:

(3) 基于表格内容构建结构阵列,结构名为student。通过访问结构阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的结构阵列。 最终得到的结构阵列可表示为 student

.name .score .mean

(4) 基于表格内容建立二维单元阵列,单位阵列中每一行保存一个学生的信息。通过访问单元阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的单元阵列。 最终得到的单元阵列格式为:

姓名 成绩 平均分 学生1 学生2 学生3 学生4

七、(15分)某一过程中通过测量得到: t y 0 1.0 0.2 1.5 0.4 1.9 0.6 2.1 0.8 2.3 1.0 2.4 2.0 2.6 5.0 -4.0

编程完成以下内容:

(1) 分别采用三阶和四阶多项式对数据进行拟合;(提示:采用polyfit进行多项式拟合;调用格式为p = polyfit(t,y,n),n为多项式阶数,p为得到的多项式系数) (2) 比较拟合效果,要求把图形窗口分成两个子窗口,子窗口1绘制出原始测量值和三阶多项式拟合后的曲线,子窗口2绘制出原始测量值和四阶多项式拟合后的曲线;

(3) 根据已知时刻点的测量值,计算两种拟合方法的均方误差(MSE)。

1n?i为拟合后的估计?i)2,其中yi为上面表中的原始测量值,y MSE??(yi?yni?1值。

四、 基本知识填空题(每空1分,共20分)

1、help disp clear save load 2、simulink toolboxes 3、eye zeros ones diag 4、grid on text

5、polar bar(或barh) hist 6、while break 7、reshape cell 五、

选择题(每题4分,共20分) D A C B B 六、

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

① 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))

四、(10分)

A=[3 1 0 5; 0 6 7 3; 0 4 3 0; 2 -1 2 6;]; %3分 b=[2 4 7 8]'; %3分

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

另一种答案:

A=[3 0 0 2;1 6 4 -1; 0 7 3 2; 5 3 0 6]; %3分 b=[2 4 7 8]; %3分 x=b/A;或x=b*inv(A); %4分

五 (10分)

ch = menu('select a num','1','2','3','4', '5'); %3分

switch ch % switch 语句格式写对2分 case 1

y=2*rand-1; %1分 case 2

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

y=randn; %1分 case 4

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

return; %1分 end

六、(10分)

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

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

'score',{[85 75 78], [83 84 92], [80 69 77], [90 75 81] }); for i=1: length(student)

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

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

student1 = {'liming', [85 75 78]; 'wanglei', [83 84 92]; 'liujun', [80 69 77]; ... 'zhangxiao', [90 75 81]}; for i=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 = [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分 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); % 也可使用hold on命令,正确画出第一个子图 2分 subplot(1,2,2);

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

i = int16(1 + t/0.1); % or i=fix(t/0.1)+1;能找到正确的估计值位置 3 分 mse1 = mean((y-y1(i)).^2); % 正确计算均方误差 1分 mse2 = mean((y-y2(i)).^2); % 正确计算均方误差 1分

西安电子科技大学

考试时间 90 分钟

MATLAB语言试题

题号 一 二 三 四 五 六 分数 总分 1.考试形式:闭卷;2.本试卷共 六 大题,满分100分。

班级 学号 姓名 任课教师

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

1. 工作空间workspace中有变量a,b,c,按如下步骤进行操作,(1)将变量a存成数据文件adata.mat,(2)清除工作区间所有变量,(3)再将数据文件调入工作区间,下面( )组命令是正确的:

A save adata a; clear; load adata; B save adata a -ascii; clear; load adata; C save adata; clear all; load adata; D save adata; clear all; load –ascii adata;

2. 在Command Window窗口中分别输入下列命令,对应输出结果正确的是( )

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

C. y=diag(eye(2)).? y=[1 1] D. rand(1,3) ans=[0.9501 1.2311 0.6068]

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

A. plot, stem, mesh, plot3, surf B. plot, stem, plot3, mesh, contour C. plot, hist, mesh, plot3, contour D. plot, hist, plot3, meshc, contour

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

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;

5. 在MATLAB的Editor中输入下列语句:x=[1 3;2

4];y=norm(x(:,2));z=det(x);u=diag(x);v=polyval(u,1);运行后,在 Command Window 中对应y,z,u,v的输出结果为( )

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

6. str1='Matlab is a usefull tool';str2=strtok(str1), strnum=length(str2), logvec=strcmpi(str2,'matlab'),k=findstr(str2,'a') 下列对变量str2, strnum,logvec,k值描述正确的是:

A ?M? 1 0 [ ] B. ?Matlab? 6 0 [2 5] C. ?M? 1 1 [ ] D. ?Matlab? 6 1 [2 5] 八、

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

抛物线的方程为y?ax2?cx,输入c后,绘制该曲线,寻找曲线的最小值和对应的x值。小明编写程序如下: 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值

三、(10分)A=[1 2 3;4 5 6;7 8 9],利用menu函数输入选择参数OprNo,OprNo=1时,将A按列向变为9×1的列矢量 ,记为B; OprNo=2时,将A的前两列的元素对应相加,得到C为3×1的列矢量; OprNo=3时,求A的对角元素之和(提示用trace函数)。

四、(10分)牛顿迭代法是方程寻根的一种方法,考虑f(x)?x2?2x?3,方程

f(x)?0的牛顿迭代公式为

xk?1?xk?f(xk)f'(xk)即

2xk?2xk?3xk?1?xk?,k?0,1,2,...。首先,编牛顿迭代法函数,函数形式如下:

2xk?2function y=NewtonEqu(x)

%函数功能:按牛顿迭代公式定义函数 %输入参数:x,自变量, %输出参数:y,函数值

然后,给定初值x0?0,编写一循环主程序,当|xk?1?xk|?10?4或循环次数大于100时,停止迭代,显示最终的方程根。

五、(15分)某班为进行综合测评,需用MATLAB编程完成以下内容: (5) 构建如下的结构阵列

(6) 对学生成绩按学分加权求出综合测评分,并从低到高排序

Gym(体育)、Eng(英语)、Math(数学)、物理(Phy)的学分分别为1 2 3 2.5,综合测

n1nxi为课程成绩,wi为相应的学分,评分的计算公式如下:x??wixi,w??wi,

wi?1i?1n为成绩个数。

(7) 按如下方式显示结果:(提示:num2str(x),可将数据x转换成字符串)

Name Score ×× ×× ×× ×× ×× ××

??10sin(2?fn/f),其中U?10V为六、(15分)下图所示的梯形电路中,若Us0ss电源电压幅值,信号频率f0?2Hz,采样频率为fs?10Hz,采样点256点,即n=0,1,2,…,255。

编程实现:

? (1) 求Uab(2) 在b点接频谱分析仪观察该点电压频谱,用MATLAB仿真,分图绘制正弦

?的波形和频谱。提示,用到的函数有fft,subplot 电压Ub建模:此电路中设各节点电压幅值为Ua、Ub 将各支路电流用这些电压来表示

I1?Us?UaUU?UbUUbI2?aI3?aI4?bI5?

R4?R5R1?R2R7R3R6对a点和b点列出节点电流方程:I1?I2?I3,I3?I4?I5,将电流表达式代入,

?1?111Us??U?U???abRRR?RRR71?23?R?3?111Ua????R36?R?R3RR?1?Ub?045?可得,可写成矩阵方程

12?Ua??a11A?????Ub??a21

?Us?a12??Ua???R1?R2? ????a22??Ub???0???MATLAB语言2007年笔试考试答案

九、

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

1、A C B B A D

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

抛物线的方程为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) 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

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

%也可用if esleif end

%(3)绘制曲线

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; %输入题设条件,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');