Matlab实验指导书DOC.docx
- 文档编号:10618552
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:29
- 大小:187.71KB
Matlab实验指导书DOC.docx
《Matlab实验指导书DOC.docx》由会员分享,可在线阅读,更多相关《Matlab实验指导书DOC.docx(29页珍藏版)》请在冰豆网上搜索。
Matlab实验指导书DOC
实验一Matlab使用方法和程序设计
1、实验目的
1、掌握Matlab软件使用的基本方法;
2、熟悉Matlab的数据表示、基本运算和程序控制语句;
3、熟悉Matlab绘图命令及基本绘图控制;
4、熟悉Matlab程序设计的基本方法。
2、实验内容
1、帮助命令
2、矩阵运算
(1)矩阵的乘法和乘方
已知A=[12;34]:
B=[55;78]:
求A^2*B
试验结果:
>>A=[12;34]
A=
12
34
>>B=[55;78]
B=
55
78
>>A^2*B
ans=
105115
229251
(2)矩阵除法
已知A=[123;456;789]:
B=[100;020;003],求矩阵左除A\B,右除A/B。
试验结果:
>>A=[123;456;789]
A=
123
456
789
>>B=[100;020;003]
B=
100
020
003
>>A\B
Warning:
Matrixisclosetosingularorbadlyscaled.
Resultsmaybeinaccurate.RCOND=1.541976e-018.
(Type"warningoffMATLAB:
nearlySingularMatrix"tosuppressthiswarning.)
ans=
1.0e+016*
-0.45041.8014-1.3511
0.9007-3.60292.7022
-0.45041.8014-1.3511
>>A/B
ans=
1.00001.00001.0000
4.00002.50002.0000
7.00004.00003.0000
(3)矩阵的转置及共轭转置
已知A=[5+i,2-i,1;6*i,4,9-i],求该复数矩阵的转置A',共轭转置A.'
试验结果:
>>A=[5+i,2-i,1;6*i,4,9-i];
>>A'
ans=
5.0000-1.0000i0-6.0000i
2.0000+1.0000i4.0000
1.00009.0000+1.0000i
>>A.'
ans=
5.0000+1.0000i0+6.0000i
2.0000-1.0000i4.0000
1.00009.0000-1.0000i
>>
(4)使用冒号选出指定元素
已知:
A=[123;456;789];求A中第3列前2个元素;A中第2、3行元素。
试验结果:
>>A=[123;456;789];
A(1:
2,3)
ans=
3
6
>>A(2:
3,:
)
ans=
456
789
(5)方括号[]
用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列
试验结果:
>>magic(4)
ans=
162313
511108
97612
414151
3、多项式
(1)求多项式P(x)=x3-2x-4的根
试验结果:
>>p=[10-2-4];
>>r=roots(p)
r=
2.0000
-1.0000+1.0000i
-1.0000-1.0000i
>>
(2)已知A=[1.2350.9;51.756;3901;1234].,构造多项式,并计算多项式值为20的解。
>>A=[1.2350.9;51.756;3901;1234];
>>poly(A)
ans=
1.0000-6.9000-77.2600-86.1300604.5500
>>polyval(ans,20)
ans=
7.2778e+004
>>
4、基本绘图命令
(1)绘制余弦曲线
。
试验结果:
试验程序:
t=pi*(0:
0.05:
2);
y=cos(t);
plot(t,y);
(2)在同一坐标系中绘制曲线
试验结果:
试验程序:
t=pi*(0:
0.05:
2);
y1=cos(t-0.25);y2=sin(t-0.5);
plot(t,y1,t,y2);
5、基本绘图控制
绘制
区间上的y=10sint曲线,并要求:
(1)线形为点划线,颜色为红色,数据点标记为加号;
(2)坐标轴控制:
显示范围,刻度线,比例,网络线;
(3)标注控制:
坐标轴名称,标题,相应文本。
试验结果:
t=pi*(0:
0.05:
4)
y=10*sin(t);
plot(t,y,'r+-.');
title('y=10sint');
xlabel('x');ylabel('y');
grid;
6、基本程序设计
(1)编写命令文件:
计算1+2+....+n<2000时的最大n值;
试验结果:
>>n=1;
>>whilesum(1:
n)<2000
n=n+1;
end
>>n
n=63
(2)编写函数文件:
分别用n和which循环结构编写程序,求2的0到n次幂的和.
试验结果:
n=input('输入正数n:
');
输入正数n:
10
ji=1;
fori=1:
n;
ji=ji+2^i;
end
ji
ji=
2047
(3)如果想对一个变量x赋值,当从键盘输入y或Y时,x自动赋为1;当从键盘输入n或N时,x自动赋为0;输入其他字符时终止程序。
k=input('shuruX:
'.'s'):
ifk=='y'k=='Y'x=1;elsek=='n'k=='N'x=0;elseruturnend
>>n=input('输入正数n:
')
输入正数n:
20
n=20
>>ji=1;
>>fori=1:
n
ji=ji+2^i;
end
>>ji
ji=2097151
>>n=input('输入正数n:
')
输入正数n:
20
n=20
>>ji=1;
>>i=1
i=1
>>whilei<=n
ji=ji+2^i;
i=i+1;
end
>>ji
ji=2097151
>>k=input('shuruX:
','s');
shuruX:
y
>>ifk=='y'k=='Y'
x=1
elseifk=='n'k=='N'
x=0
else
return
end
ans=0
x=1
>>k=input('shuruX:
','s');
shuruX:
n
>>ifk=='y'k=='Y'
x=1
elseifk=='n'k=='N'
x=0
else
return
end
ans=0
x=0
实验二控制系统分析
(一)
1.实验目的
1.掌握如何使用Matlab进行系统的时域分析;
2.掌握如何使用Matlab进行系统的频域分析。
2.实验内容
1.时域分析
(1)根据下面传递函数模型,绘制其单位阶跃响应曲线并从图上读取最大超调量、调节时间、上升时间,绘制系统的单位脉冲响应、零输入响应曲线(设初始状态x0=[1,0,0])。
G(s)=
试验结果:
num=[52530];
den=[16108];
g=tf(num,den);
[y,t,x]=step(g);
plot(t,y);
num=[52530];
den=[16108];
g=tf(num,den);
[y,t,x]=impulse(g);
plot(t,y);
(2)根据下面传递函数模型,绘制其单位阶跃响应曲线并编程序求该系统的上升时间、调节时间、峰值时间、超调量和终值(
)。
G(s)=
(3)典型二阶系统传递函数为:
G(s)=
当
=0.7,wn取2、4、6、8、10、12的单位阶跃响应。
2.频域分析
(1)典型二阶系统传递函数为:
G(s)=
在同一幅图上绘制当
=0.7,wn取2、4、6、8、10、12的伯德图。
运行程序及结果如下:
(2)已知系统开环传递函数为:
G(s)H(s)=
在同一幅图上绘制当
=3,T=8和
=8,T=3的奈氏图。
实验三控制系统分析
(二)
1、实验目的
1.掌握如何使用Matlab进行系统的稳定性分析;
2.掌握如何使用Matlab进行系统的根轨迹分析;
3.掌握如何使用Matlab进行离散系统分析。
2、实验内容
1.系统稳定性分析
(1)代数法稳定性判据:
(用求分母多项式的根、routh函数和hurwrtz函数等几种方法),已知负反馈控制系统的开环传递函数为:
G(s)=100(s+2)/s(s+1)(s+20)是对系统闭环判别其稳定性。
参考程序:
num0=conv(100,[12]);
dcn0=conv(conv([10],[11]),[120]);
[num0,dcn0]=feedback(num0,dcn0,1,1);
[z,p,k]=tf2zp(num0,dcn0)%p=roots(dcno)
ii=find(real(p)>0);
n=length(ii);
if(n>0),disp('闭环系统是不稳定的'),
disp('不稳定的闭环极点是'),
disp(p(ii))
elsedisp('闭环系统是稳定的');
end
试验结果:
闭环系统是稳定的
function[rtab,info]=routh(den)
info=[];
vec1=den(1:
2:
length(den));
nrT=length(vec1);
vec2=den(2:
2:
length(den));
rtab=[vec1;vec2,zeros(1,nrT-length(vec2))];
fork=1;length(den)-2
alpha(k)=vec1
(1)/vec2
(1);
ifmod(length(den),2)==0
n=length(vec1)-1;
elsen=length(vec2);
end
fori=1:
n
a3(i)=rtab(k,i+1)-alpha(k)*rtab(k+1,i+1);
end
ifsum(abs(a3))==0
a3=polyder(vec2);
info=[info,'Allelementsinrow',...
int2str(k+2)'arezeros;'];
elseifabs(a3
(1)) a3 (1)=1e-6 info=[info,'Replacefirstelement;']; end rtab=[rtab;a3,zeros(1,nrT-length(a3))]; vec1=vec2;vec2=a3;a3=[]; end n=find(rtab(: 1)<0); iflength(info)~=0 info1='Thissystemiscriticalsteady! '; elseiflength(n)~=0 info1='Thissystemisnotsteady! '; elseinfo1='Thissystemissteady! '; end info=[info,info1]; clear numo=conv(100,[12]); deno=conv(conv([10],[11]),[120]); [numc,denc]=feedback(numo,deno,1,1); [rtab,info]=routh(denc) function[H,Hz_det,info]=huewitz(den) n=length(den)-1; fori=1: n i1=floor(i/2); ifi=i1*2 hsub1=den(1: 2: n+1); i1=i1-1; elsehsub1=den(2: 2: n+1); end l1=length(hsub1); H(i,: )=[zeros(1,i1),hsub1,zeros(1,n-i1-l1)]; end [nr,nc]=size(H); fori=1: nr Hz_det(i,1)=det((H(1;i,1;i))); end ii=find(Hz_det<0); n=length(ii); ifn>0 info='该系统是不稳定的'; else info='该系统是稳定的' end end clear; numo=conv(100,[12]); deno=conv(conv([10],[11]),[120]); [numc,denc]=freedback(numo,deno,1,1); [H,Hz_det,info]=hurwitz(denc) (4)已知离散系统传递函数H(z)=0.632/(z2-1.368z+0.568)绘制系统的Nyquist曲线,判别系统稳定性,并绘制出闭环系统的单位脉冲响应。 参考程序如下: num=0.632; den=[1,-1.368,0.568]; [z,p,k]=tf2zp(num,den); P figure (1) subplot(211) dnyquist(num,den,0.1,'k'); title('离散Nyquist曲线图'); subplot(212) [num1,den1]=cloop(num,den); dimpulse(num1,den1,'k'); title('离散冲击响应') (5)根轨迹分析 根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析系统稳定的K值范围。 参考程序如下: num=1; den=conv([10],conv([11],[12])); rlocus(num,den); axis([-51-44]) [k,poles]=rlocfind(num,den) 试验结果: poles= -2.7422 -0.1289+1.1298i -0.1289-1.1298i 实验四古典控制系统设计 1.实验目的 掌握使用Bode图法进行控制系统设计的方法. 2.实验内容 1.设单位负反馈被控对象的开环传递函数为: 试设计一串联校正装置,使得校正后的系统满足: 稳态速度误差系数Kv=25s-1;相位欲量 。 分析: 由稳态速度误差系数kv=25,可得系统开环增益k=kv=25;由原系统伯德图知,原系统相位欲量Y=32’1449°,对应频率为wcp=4.1142,该系统不稳定,采用串联滞后校正。 参考程序: clear; num=25; den=conv([10],conv([11],[0.251])); Gyuan=tf(num,den); [mag,phase,w]=bode(Gyuan); [gm,pm,wcg,wcp]=margin(Gyuan); pm,wcp gama=40;deta=10;%deta值为保证一定的欲度 phi=gama+deta-180; wcnew=spline(phase,w,phi); Lw=spline(w,20*log10(mag),wcnew); b=10^(-Lw/20); T=1/b/(0.1*wcnew); Gc=tf([b*T1],[T1]) Gnew=Gyuan*Gc w=logspace(-1,4,100); [gm,pmnew,wcg,wcpnew]=margin(Gnew) pmnew,wcpnew Fyuan=feedback(Gyuan,1); Fnew=feedback(Gnew,1); figure (1) bode(Gyuan,w) holdon bode(Gnew,w) holdoff gridon figure (2) step(Fyuan,[0: 0.01: 10]) gridon figure(3) step(Fnew,[0: 0.01: 50]) gridon 2.设单位负反馈被控对象的开环传递函数为: 试设计一串联校正装置,使得校正后的系统满足: 斜坡信号作用下 ;穿越频率wc rad/s;相位欲量Y 45°。 参考程序如下: 方法一: clear; num=1000; den=conv([10],conv([0.11],[0.0011])); Gyuan=tf(num,den); [mag,phase,w]=bode(Gyuan); [gm,pm,wcg,wcp]=margin(Gyuan); pm,wcp wcnew=170; Lw=spline(w,20*log10(mag),wcnew); a=10^(-Lw/10); T=1/wcnew/sqrt(a); Gc=tf([a*T1],[T1]) Gnew=Gyuan*Gc w=logspace(-1,4,100); [gm,pmnew,wcg,wcpnew]=margin(Gnew); pmnew,wcpnew Fyuan=feedback(Gyuan,1); Fnew=feedback(Gnew,1); figure (1) bode(Gyuan,w) holdon bode(Gnew,w) holdoff gridon figure (2) subplot(121) step(Fyuan,[0: 0.001: 0.2]) gridon subplot(122) step(Fnew,[0: 0.001: 0.1]) gridon 实验五SIMULINK仿真 1.实验目的 学习使用SIMULINK进行系统仿真的方法。 2.实验内容 1.Simulink的基本操作: (1)运行Simulink; (2)常用的标准模块; (3)模块的操作; (4)参数设置。 2.系统仿真及参数设置: (1)算法设置(Solver); (2)工作空间设置(WorkspaceI/O) 3.已知系统结构图如下: 已知输入为单位阶跃信号,仿真时间为30秒,试用Simulink绘制其响应曲线。 4.已知具有间隙非线性的控制系统结构图如下, 设输入为单位阶跃函数,仿真时间为30秒,间隙参数为c=0.375,试用Simulink绘制其响应曲线。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 实验 指导书 DOC
![提示](https://static.bdocx.com/images/bang_tan.gif)