MATLAB习题参考答案.docx
《MATLAB习题参考答案.docx》由会员分享,可在线阅读,更多相关《MATLAB习题参考答案.docx(38页珍藏版)》请在冰豆网上搜索。
MATLAB习题参考答案
第1章MATLAB简介
1、MATLAB的主要特点有:
①语言简洁,编程效率高。
②人机界面友善,交互性好。
③绘图功能强大,便于数据可视化。
④学科众多、领域广泛的MATLAB工具箱。
⑤源程序的开放性。
MATLAB的典型应用领域有:
①自动控制②汽车③电子④仪器仪表⑤生物医学⑥信号处理⑦通信等。
2、填空题
⑴命令窗口、命令历史窗口、当前目录窗口
⑵查阅、保存、编辑
⑶清除图形窗、清除命令窗口中显示内容、清除MATLAB工作空间中保存的变量。
3、如果想查看某一变量具体内容或者对其修改操作,可以在工作空间中双击该变量名称,可以打开数组编辑器,在数组编辑器中可以查看变量的具体内容,也可以对其修改。
如果想删除MATLAB内存中的变量,可以在工作空间中选中该变量,然后利用工作空间窗口的菜单命令或工具条中的快捷图标进行删除。
4、1+2+3+4+5+...(+后面可以直接跟...,也可以在+和...中加一个空格。
)
6+7+8+9
1+2+3+4+5...(5后面必须跟一个空格,不能直接跟...,否则报错,这在预置一个+6+7+8+9大数组时很重要。
)
第2章矩阵与数值数组
1、填空题:
⑴非数、无穷大、机器零阈值,浮点数相对精度,eps=2.2204e-016。
⑵全下标、单下标。
2、阅读程序题:
(本题主要考察数组的寻访、赋值和简单运算,提示:
带;的语句不显示结果)
⑴ans=
237
Sa=
10
20
30
A=
1205309
1046810
⑵A=
13579111315
246810121416
ans=
15913
261014
371115
481216
A=
0057001315
2400101200
⑶ans=
-1-4
64
ans=
30
5-2
ans=
36
912
ans=
36
912
3、A=magic(4);
L=A<10
L=
0110
1001
1110
1001
4、省略。
第3章字符串、元胞和构架数组
1.直接创建法:
S1=['Wherethereislife,'
'thereishope.']%注意第2行要加入6个空格使其与第一行字符数相等,否则报错。
S2=str2mat('Wherethereislife,','thereishope.')
S3=strvcat('Wherethereislife,','thereishope.')%后两种方法则不用考虑两行字符的数目
2.填空题:
A(2,3);A{2,3}
3.阅读程序题:
⑴subch=
ABc12
revch=
4d321cBA
⑵(提示:
本题考察元胞数组两种不同的寻访方法)
A{1,1}=
thisiscell
A{2,1}=
1.0000+2.0000i
A{1,2}{1}=
12
34
A{2,2}=
67
89
4.%Homework3.4
student=cell(2,2);%利用cell函数预先分配存储空间
student(1,1)={['';'']};
student(2,1)={{'张三';'李小红'}};
student(1,2)={{'数学1''英语1''代数''制图';'数学2''英语2''电路''信号'}};
student(2,2)={{[80906596;92758078];[78698074;50786880]}};
celldisp(student)
5.%Homework3_5.m
student
(1)=struct('class',{'电子技术'},'name',{'无敌'},'gender',{'男'},'number',{''},...
'course',{{'英语''数学''计算机'}},'score',{[758567]})
student
(2)=struct('class',{'电子技术'},'name',{'王思远'},'gender',{'男'},'number',{''},...
'course',{{'英语''数学''计算机'}},'score',{[99780]})
student(3)=struct('class',{'通信工程'},'name',{'李蕾'},'gender',{'女'},'number',{''},...
'course',{{'英语''数学''计算机'}},'score',{[807253]})
student(4)=struct('class',{'通信工程'},'name',{'王伟'},'gender',{'男'},'number',{''},...
'course',{{'英语''数学''计算机'}},'score',{[978262]})
第4章数值计算
1.rand(2,3)的含义为生成2×3随机矩阵。
2.应用LU分解和矩阵除法求方程组
的解。
方法一:
A=[2,-3,0;4,-5,1;2,0,4];
[L,U]=lu(A);
B=[8;15;10];
x=U\(L\B)
方法二:
A=[2,-3,0;4,-5,1;2,0,4];
B=[8;15;10];
A\B
3.求一元非线性方程
的根。
程序:
%计算函数数值
x=[-10:
0.1:
10];
y=x-sin(x)./x;
%绘制函数图形
plot(x,y);
%锁定当前图形并添加网格线
%holdon;
gridon
%绘制水平线
line([-1010],[00]);
%添加坐标名称
xlabel('x');ylabel('y(x)');
[xx,yy]=ginput
(1)%在MATLAB指令窗中运行,用鼠标获2个零点猜测值。
%第三步,计算xx
(1)和xx
(2)的精确零点
y=inline('x-sin(x)./x','x');%构造内联函数求解
[x,y]=fzero(y,xx)
运行结果:
xx=
0.8525
yy=
-0.0219
x=
0.8767
y=
0
4.求f(x)=3x2-5x+1极小值。
%绘制函数曲线
x=[-5:
0.1:
5];
f=3*x.^2-5.*x+1;
plot(x,f);
%估计极小值点的坐标。
由图可以看出,在[02]间有极小值
[xx,ff]=ginput
(1)
%编写函数文件,保存文件名为myfun4_4.m
functionf=myfun4_4(x)
f=3*x.^2-5.*x+1;
%求极小值
>>[x,fval]=fminbnd(@myfun4_4,0,2)
x=
0.8333
fval=
-1.0833
5.求积分
Q=dblquad(@(x,y)(x.*cos(x+y^2)),pi,2*pi,0,pi)
7.求常微分方程的数值解。
dsolve('D2y*(x-1)+2*Dy+y=0','y(0)=1,Dy(0)=1','x')
第5章符号运算
5.1C
5.2B
5.3C
5.4 symsx;
f=x^4-5*x^3+5*x^2-6;
factor(f)
5.5symsx;
f=cos(x)+sqrt(-sin(x)^2);
f1=simple(f)
f2=simple(f1)
5.6symsatx;
f=[a*x^2,2*t^4;exp(t)*sin(x),t*log(x)];
dfdt2=diff(f,t,2)
dfdxdt=diff(diff(f,x),t)
5.7symsxyz;
f=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2)
vpa(f)
5.8A=sym([11/21/2-1;11-11;1-1/4-11;-8-111]);
B=sym([0;10;0;1]);
X=A\B
5.9S=dsolve('D2x+2*Dy-x=0,Dx+y=0','x(0)=1,y(0)=0');
S.x
S.y
5.10symsts;
symsabpositive;%a,b为正
Dt=sym('Dirac(t)');
Ut=sym('Heaviside(t-a)');
T=[Dt,Ut;t^2*sin(2*t),exp(-a*t)*cos(b*t)];
S=laplace(T,t,s)
第6章MATLAB图形绘制
6.1C
6.2A
6.3D
6.4x=0:
0.01:
6;
y1=sin(2*x);
y2=x.*cos(x);
y3=exp(2*cos(x));
plot(x,y1,'r:
',x,y2,'b-.',x,y3,'g--')
6.5x=-10:
0.15:
10;
y=sin(x)./x;
plot(x,y)
xlabel('x');
ylabel('y=sinx/x');
title('门函数的频谱')
6.6x=[30.5,26.5,21,10,12];
subplot(1,2,1)
pie(x,[11000])
subplot(1,2,2)
pie3(x,[10100])
legend({'1','2','3','4','5'})
6.7income=[1.021.351.662.01];
x=2005:
2008;
expenses=[0.851.061.211.48];
area(x,income,'facecolor',[0.50.90.6],'edgecolor',...
'b','linewidth',2)%设置填充色、边界色和边界宽度
holdon
area(x,expenses,'facecolor',[0.90.80.7],'edgecolor','r','linewidth',2)
holdoff
set(gca,'xtick',[2005:
2008])%x轴为2005到2008
xlabel('年份','fontsize',10)%x轴标注字号为10号
ylabel('万元','fontsize',10)
gtext('支出')%通过光标在图形上添加注释
gtext('收入')
gtext('\rightarrow利润')
6.8x=[0.51.53];
y=[25641
34522
13821];
bar3(x,y,'detached')
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
6.9略.
6.10略.
第7章M文件和MATLAB编程
1.脚本文件的扩展名为m,函数文件的扩展名为m。
2.MATLAB语言支持的3种最基本的控制结构为顺序结构、选择结构和循环结构。
3.在循环结构中跳出当前循环,继续下一次循环的命令为c。
A.breakB.returnC.continueD.keyboard
4.简述使用M文件与在MATLAB命令窗口中直接输入命令有何异同?
有何优缺点?
MATLAB命令窗口中直接输入命令为指令驱动模式。
在MATLABM命令行窗口下用户输入单行指令时,MATLAB立即处理这条指令,并显示结果。
命令行方式程序可读性差,而且不能存储,当处理复杂问题和大量数据时很不方便。
M文件模式是将MATLAB语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。
程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。
该工作方式便于文件修改保存,使用方便。
5.编写脚本文件,计算1+3+5+7+…+(2n+1)的和。
clc,clear
sum=0;
n=input('输入n=');
fori=1:
2:
2*n+1
sum=sum+i;
end
sum
6.编写脚本文件,用magic(6)产生一矩阵,求解其下三角所有元素的和。
clc,clear
a=magic(6);
sum=0;
fori=1:
6
forj=1:
6
ifi>=j
sum=sum+a(i,j);
end
end
end
sum
7.编写一个函数文件,利用函数的递归调用,求n!
。
functionf=factor(n)
ifn<=1
f=1;
else
f=factor(n-1)*n;
end
8.编写一个脚本文件,在该文件中调用上题编写的函数文件,求s=1!
+2!
+3!
+4!
+5!
。
s=0;
fori=1:
5
s=s+factor(i);
end
s
第8章SIMULINK交互式仿真集成环境
1.Simulink环境中创建的模型保存为B文件。
A.mB.mdlC.mexD.fig
2.建立如下图所示的仿真模型并进行仿真,观察波形的变化。
试再建立一个新的仿真模型,并得到同样的仿真结果。
仿真结果为圆。
将sinewave1的phase参数设置为pi/2.
3.使用阶跃信号为输入信号,经过传递函数
的一阶系统,查看输出波形在示波器上的显示。
4.二阶系统的微分方程为
,
,
,
是单位阶跃信号。
用积分模块创建求解该微分方程的模型,仿真时间为
。
5.封装一个子系统,系统方程为
,其中x为输入,y为输出,通过对话框输入a、b、c的值。
a=1,b=2,c=3
6.系统在
时,输出为单位脉冲信号,当
输出为
。
试建立该系统模型,并进行仿真分析。
第9章MATLAB在电路仿真中的应用
1、搭建如图所示的仿真电路,根据题目给出的条件设置各元器件参数,得到仿真结果。
练习题9.1仿真电路图
2、解答:
搭建好的仿真电路如图9.16所示,为了把电容上的三种电压波形画在一张图内,这里选用VoltageMeasurement模块取出电容两端的电压,并送给Sinks下的out模块,这样在仿真时会在MATLAB工作空间中产生2个默认变量,时间变量tout和数据变量yout。
仿真时间设为10S,步长和方法一保持一致,设为0.1S。
仿真过程由以下几个步骤完成:
①如图9.16连接好仿真电路,然后对各元件设置参数。
交流电压源AC的参数为:
Peakamplitude(V)为0,Frequency(Hz)的值由角频率
可算得大约为0.318Hz。
开关Breaker的Initialstate设为0,Switchingtimes(s)设为0.01。
电阻R阻值为2,电容C的Capacitance(F)设为0.5,capacitorinitialvoltage(V)设为5。
参数设置完毕进行仿真,仿真结束后在MATLAB工作空间产生tout和yout,在工作空间中修改yout为yout1(如图9.17所示),yout1为电容电压的零输入响应。
②交流电压源AC的参数Peakamplitude(V)设为10,电路其它参数不变,只把电容C的Settheinitialcapacitorvoltage不选中,即不设置初始电压值,再进行仿真,在工作空间中修改yout为yout2,yout2为电容电压的零状态响应。
③在命令窗口输入:
yout3=yout1+yout1,yout3为电容电压的全响应。
④在命令窗口用绘图指令画出电容上的三种响应波形,如下图所示:
plot(tout,yout1,'-',tout,yout2,':
',tout,yout3,'-.*'),gridon%把三种数据画在一张图上
legend('yout1','yout2','yout3')%用图例标注
练习题9.2波形图
3、这个题的参数也得改动如下:
如图所示电路,已知
A,L1=3H,L2=2H,M=1H,R2=2Ω。
试利用MATLAB中的电力系统模块集和虚拟仪器对电路进行仿真,画出电流i2(t)的波形。
i2(t)
M
i2(t)
练习题3图
解答:
搭建如下图所示的仿真电路,并根据题目给出的条件设定参数(注意交流电源要和一个比较大的电阻并联,然后和互感线圈相连,否则报错)。
练习题9.3仿真电路图
然后进行仿真,得如下波形图:
练习题9.3波形图
第10章MATLAB在信号处理中的应用
10.1在用MATLAB表示离散序列并将其可视化时,要注意什么?
答:
在用MATLAB表示离散序列并将其可视化时,我们要注意以下几点:
第一,与连续时间信号不同,离散时间信号无法用符号运算来表示;第二,由于在MATLAB中,矩阵的元素个数是有限的,因此,MATLAB无法表示无限序列;第三,在绘制离散信号波形时,要使用专门的绘制离散数据的stem命令,而不是plot命令。
10.2已知
的波形如图1所示,用MATLAB画出下列信号的波形。
03
2
(1)
(2)
(3)
(4)
图1
解:
MATLAB程序如下
%ex10_2.m10.2题参考程序
clear
symst
f=sym('(-2/3*t+2)*(u(t)-u(t-3))');
f1=subs(f,t,t+3);
subplot(221),ezplot(t,f1,[-4,1,-1,2.2]),title('f(t+3)')
f2=subs(f,t,2*t-2);
subplot(222),ezplot(t,f2,[0,3,-1,3]),title('f(2t-2)')
f3=subs(f,t,2-2*t);
subplot(223),ezplot(t,f3,[-1,2,-0.2,2.2]),title('f(2-2t)')
f4=subs(f,t,-0.5*t-1);
subplot(224),ezplot(t,f4,[-10,-1,-0.2,2.2]),title('f(-0.5t-1)')
运行结果如图2所示。
图2习题10.2的结果
10.3用MATLAB画出下列微分方程所描述系统的冲激响应和阶跃响应。
(1)
(2)
解:
MATLAB程序如下
%ex10_3.m第10.3题参考程序
%第
(1)题
a=[12];b=[3];
figure
(1)
subplot(121),impulse(b,a)
subplot(122),step(b,a)
%第
(2)题
a=[132];b=[100];
figure
(2)
subplot(121),impulse(b,a)
subplot(122),step(b,a)
运行结果如图3所示。
(a)习题10.3
(1)结果
(b)习题10.3
(2)结果
图3
10.4已知某LTI连续系统的微分方程为
用MATLAB求该系统的频率响应
,并画出其幅频曲线和相频曲线。
解:
MATLAB程序如下
%ex10_4.m10.4题参考程序
b=[2];
a=[13];
w=0:
0.01:
10;
h=freqs(b,a,w);
H=abs(h);%求幅频响应
p=angle(h);%求相频响应
subplot(211);
plot(w,H);
grid
xlabel('w');
ylabel('幅度');
title('H(jw)的幅频特性');
subplot(212);
plot(w,p*180/pi);
grid
xlabel('w');
ylabel('相位(度)');
title('H(jw)的相频特性');
运行结果如图4所示。
图4习题10.4的结果
10.5已知下列系统函数所表示的系统,分析这些系统是否稳定。
(1)
(2)
(3)
(4)
解:
MATLAB程序如下
%ex10_5.m10.5题参考程序
%
(1)
A1=[141-6];B1=[100];
figure
(1)
[p1,q1]=sjdt(A1,B1);
%
(2)
A2=[110];B2=[1-2];
figure
(2)
[p2,q2]=sjdt(A2,B2);
%(3)
A3=[1-0.5-0.0050.3];B3=[121];
figure(3)
[p3,q3]=ljdt(A3,B3);
%(4)
A4=[552];B4=[102];
figure(4)
[p4,q4]=ljdt(A4,B4);
运行结果如图5所示。
(a)习题10.5
(1)结果(b)习题10.5
(2)结果
(c)习题10.5
(1)结果(d)习题10.5
(2)结果
图5
由图5(a)可见:
(1)系统函数的极点不全在左半开平面,该连续系统不稳定
(2)系统函数的极点不全在左半开平面,该连续系统不稳定
(3)系统函数的极点均在单位圆内,该离散系统稳定
(4)系统函数的极点均在单位圆内,该离散系统稳定
10.6已知描述某LTI系统的微分方程为
输入
,初始状态
,
。
利用MATLAB在s域求该系统的零状态响应。
解:
MATLAB程序如下
%ex10_6.m10.6题参考程序
symssYzs
a=[156];
b=[003];
F=1/(s+1);
Sn=[s^2s1];%s的二阶多项式
A=a*Sn';%分母多项式
B=b*Sn';%分子多项式
H=B/A;%计算H(s)
Yzs=H.*F;%计算零状态响应的拉式变换
yzs=ilaplace(Yzs);%拉式反变换求得零状态响应
disp('零状态响应')
pretty(yzs)
运行结果:
零状态响应
3/2exp(-3t)-3exp(-2t)+3/2exp(-t)
10.7考察DFT的长度对双频率信号频谱分析的影响。
设待分析的信号为
令两个长度为16的正余弦序列的数字频率为
及
。
取N为四个不同值16,32,64,128,画出四个DFT幅频图。
分析DFT长度对频谱分辨率的影响。
解:
MATLAB程序如下
%ex10_7.m10.7题参考程序
N=input('输入谱分析长度N=')
f1=0.22;f2=0.34;
n=0:
N-1;
xn=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n);
X=abs(fft(