系统仿真实验报告Word文档格式.docx
《系统仿真实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《系统仿真实验报告Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
b=A/B
c=inv(A)*B
d=B*inv(A)
a=
-3-4
45
b=
3.0000-2.0000
2.0000-1.0000
c=
-3.0000-4.0000
4.00005.0000
d=
-1.00002.0000
-2.00003.0000
7.roots(p)
symsx;
a=3*x.^3+2*x+1;
p=[3,0,2,1];
roots(p)
0.2012+0.8877i
0.2012-0.8877i
-0.4023
8.poly
poly(A)
1.0000-5.0000-2.0000
9.conv、deconv
A=[12];
B=[56];
a=conv(A,B)
b=deconv(A,B)
51612
0.2000
10.A*B与A.*B的区别
B=[56]'
;
a=A*B
b=A.*B
17
512
11.who与whos的使用
who
whos
Yourvariablesare:
A
NameSizeBytesClassAttributes
A2x232double
12.disp、size(a)、length(a)的使用
a='
ABCDEF'
disp(a)
a=[1234];
B=size(a)
C=length(a)
ABCDEF
B=
14
C=
4
三、实验要求
根据实验内容和相关命令进行实验,自拟输入元素,将上述各命令的输入和输出结果写成实验报告一(全部实验完成后交实验报告)。
实验二MATLAB绘图命令
熟悉MATLAB基本绘图命令,掌握如下绘图方法:
1.坐标系的选择、图形的绘制;
2.图形注解(题目、标号、说明、分格线)的加入;
3.图形线型、符号、颜色的选取。
1.plot2.loglog3.semilogx4.semilogy
5.polar6.title7.xlabel8.ylabel
9.text10.grid11.bar12.stairs
13.contour
三、实验举例
1.t=[0:
pi/360:
2*pi*22/3];
x=93*cos(t)+36*cos(t*4.15);
y=93*sin(t)+36*sin(t*4.15);
plot(y,x),grid;
%绘制二维坐标网格图
2.t=0:
0.05:
100;
x=t;
y=2*t;
z=sin(2*t);
plot3(x,y,z,'
r-.'
)%绘制三维坐标图
3.t=0:
pi/20:
2*pi;
y=sin(x);
stairs(x,y)%绘制阶梯图
4.th=[pi/200:
pi/200:
2*pi]'
r=cos(2*th);
polar(th,r),grid%在网格里画极坐标图
5.th=[0:
pi/10:
2*pi];
x=exp(j*th);
%x为复数
plot(real(x),imag(x),'
r*'
);
%以实部为横轴,虚部为纵轴画图
grid;
四、实验要求
在两种或两种以上坐标系绘制3~5个图形,要有颜色、图形种类、注解的不同
实验结果写成实验报告二(全部实验完成后交实验报告)。
实验三MATLAB程序设计
1.熟悉MATLAB程序设计的方法和思路;
2.掌握循环、分支语句的编写,学会使用lookfor、help命令。
二、程序举例
1.计算1~1000之内的斐波那契亚数列
f=[1,1];
i=1;
whilef(i)+f(i+1)<
1000
f(i+2)=f(i)+f(i+1);
i=i+1;
end
f,i
f=
Columns1through14
1123581321345589144233377
Columns15through16
610987
i=
15
2.m=3;
n=4;
fori=1:
m
forj=1:
n
a(i,j)=1/(i+j-1);
end
formatrat
a
11/21/31/4
1/21/31/41/5
1/31/41/51/6
3.m=3;
1/31/41/51/6
请比较程序2与程序3的区别
4.x=input('
请输入x的值:
'
ifx==10
y=cos(x+1)+sqrt(x*x+1);
else
y=x*sqrt(x+sqrt(x));
y
请输入x的值:
2
y=
2391/647
5.去掉多项式或数列开头的零项
p=[0001302009];
length(p),ifp
(1)==0,p=p(2:
length(p));
end;
end;
p
p=
Columns1through5
13020
Columns6through7
09
6.建立MATLAB的函数文件,程序代码如下,以文件名ex2_4.m存盘
functionf=ffibno(n)
%ffibno计算斐波那契亚数列的函数文件
%n可取任意自然数
%程序如下
f=[1,1];
>
edit
ex2_4(200)
Columns1through5
11235
Columns6through10
813213455
Columns11through12
89144
lookforffibno
ex2_4-ffibno计算斐波那契亚数列的函数文件
helpex2_4
ffibno计算斐波那契亚数列的函数文件
n可取任意自然数
程序如下
输入完毕后在MATLAB的命令窗口输入ex2_4(200),得到运行结果。
在MATLAB的命令窗口输入lookforffibno,得到结果:
ex2_4.m:
%ffibno计算斐波那契亚数列的函数文件
在MATLAB的命令窗口输入helpex2_4,得到结果:
ffibno计算斐波那契亚数列的函数文件
n可取任意自然数
程序如下
三、程序设计题
用一个MATLAB语言编写一个程序:
输入一个自然数,判断它是否是素数,如果是,输出“Itisoneprime”,如果不是,输出“Itisnotoneprime.”。
要求通过调用子函数实现。
最好能具有如下功能:
①设计较好的人机对话界面,程序中含有提示性的输入输出语句。
②能实现循环操作,由操作者输入相关命令来控制是否继续进行素数的判断。
如果操作者希望停止这种判断,则可以退出程序。
③如果所输入的自然数是一个合数,除了给出其不是素数的结论外,还应给出至少一种其因数分解形式。
例:
输入6,因为6不是素数。
则程序中除了有“Itisnotoneprime”的结论外,还应有:
“6=2*3”的说明。
closeall;
c=1;
c=input('
是否进行素数运算1为是0为否:
'
whilec==1
a=input('
请输入一个自然数:
iffactor(a)==a
disp('
Itisoneprime'
)
else
Itisnotoneprime'
b=factor(a);
fprintf('
%3d='
a)
forj=1:
(length(b)-1)
%3d*'
b(j))
end
%3d\n'
b(length(b)))
20
Itisnotoneprime
20=2*2*5
Itisoneprime
1.参照已知程序,改动程序中的参数和输入量,验证输出结果。
2.使用lookfor、help命令,验证输出结果
3.实验结果写成实验报告三(全部实验完成后交实验报告)。
实验四MATLAB的符号计算与SIMULINK的使用
1.掌握MATLAB符号计算的特点和常用基本命令;
2.掌握SIMULINK的使用。
1.求矩阵对应的行列式和特征根
a=sym('
[a11a12;
a21a22]'
da=det(a)
ea=eig(a)
da=
a11*a22-a12*a21
ea=
1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)
1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)
2.求方程的解(包括精确解和一定精度的解)
r1=solve('
x^2-x-1'
rv=vpa(r1)
rv4=vpa(r1,4)
rv20=vpa(r1,20)
r1=
1/2*5^(1/2)+1/2
-1/2*5^(1/2)+1/2
rv=
1.6180339887498948482045868343656
-.61803398874989484820458683436560
rv4=
1.618
-.6180
rv20=
1.6180339887498948482
-.61803398874989484820
3.a=sym('
a'
b=sym('
b'
c=sym('
c'
d=sym('
d'
%定义4个符号变量
w=10;
x=5;
y=-8;
z=11;
%定义4个数值变量
A=[a,b;
c,d]%建立符号矩阵A
B=[w,x;
y,z]%建立数值矩阵B
det(A)%计算符号矩阵A的行列式
det(B)%计算数值矩阵B的行列式
A=
[a,b]
[c,d]
105
-811
a*d-b*c
150
4.symsxy;
s=(-7*x^2-8*y^2)*(-x^2+3*y^2);
expand(s)%对s展开
collect(s,x)%对s按变量x合并同类项(无同类项)
factor(ans)%对ans分解因式
7*x^4-13*x^2*y^2-24*y^4
(8*y^2+7*x^2)*(x^2-3*y^2)
5.对方程AX=b求解
A=[34,8,4;
3,34,3;
3,6,8];
b=[4;
6;
2];
X=linsolve(A,b)%调用linsolve函数求解
A\b%用另一种方法求解
X=
0.0675
0.1614
0.1037
ans=
6.对方程组求解
a11*x1+a12*x2+a13*x3=b1
a21*x1+a22*x2+a23*x3=b2
a31*x1+a32*x2+a33*x3=b3
symsa11a12a13a21a22a23a31a32a33b1b2b3;
A=[a11,a12,a13;
a21,a22,a23;
a31,a32,a33];
b=[b1;
b2;
b3];
XX=A\b%用左除运算求解
XX=
(a12*a23*b3-a12*b2*a33+a13*a32*b2-a13*a22*b3+b1*a22*a33-b1*a32*a23)/(a11*a22*a33-a11*a32*a23-a21*a12*a33+a32*a21*a13-a22*a31*a13+a31*a12*a23)
-(a11*a23*b3-a11*b2*a33-a21*a13*b3-a23*a31*b1+b2*a31*a13+a21*b1*a33)/(a11*a22*a33-a11*a32*a23-a21*a12*a33+a32*a21*a13-a22*a31*a13+a31*a12*a23)
(a32*a21*b1-a11*a32*b2+a11*a22*b3-a22*a31*b1-a21*a12*b3+a31*a12*b2)/(a11*a22*a33-a11*a32*a23-a21*a12*a33+a32*a21*a13-a22*a31*a13+a31*a12*a23)
7.symsabtxyz;
f=sqrt(1+exp(x));
diff(f)%未指定求导变量和阶数,按缺省规则处理
f=x*cos(x);
diff(f,x,2)%求f对x的二阶导数
diff(f,x,3)%求f对x的三阶导数
f1=a*cos(t);
f2=b*sin(t);
diff(f2)/diff(f1)%按参数方程求导公式求y对x的导数
1/2/(1+exp(x))^(1/2)*exp(x)
ans=
-2*sin(x)-x*cos(x)
-3*cos(x)+x*sin(x)
-b*cos(t)/a/sin(t)
三、SIMULINK的使用
1.在命令窗口中输入:
simulink(回车)得到如下simulink模块:
2.双击打开各模块,选择合适子模块构造控制系统,例如:
3.双击各子模块可修改其参数,选择Simulation菜单下的start命令运行仿真,在示波器(Scope)中观察结果。
1.符号计算部分:
参照所给示例,自拟输入量,验证求矩阵的特征根、行列式及
方程求解命令
2.Simulink部分:
逐一熟悉各模块的使用,对下面的随动系统模型进行仿真,
实验报告中包含:
连好的系统模型及用Scope观测的结果
其中:
R(s)为阶跃输入,C(s)为输出
3.实验结果写成实验报告四
备注:
全部实验完成后,在实验报告的封面注明:
课程、班级、姓名、学号等信息。
按时交实验报告。
实验五MATLAB在控制系统分析中的应用
1.求下面系统的单位阶跃响应
%程序如下:
num=[4];
den=[1,1,4];
step(num,den)
[y,x,t]=step(num,den);
tp=spline(y,t,max(y))%计算峰值时间
max(y)%计算峰值
tp=
1.6062
1.4441
2.求如下系统的单位阶跃响应
a=[0,1;
-6,-5];
b=[0;
1];
c=[1,0];
d=0;
[y,x]=step(a,b,c,d);
plot(y);
grid;
3.求下面系统的单位脉冲响应:
den=[1,1,4];
impulse(num,den)
4.已知二阶系统的状态方程为:
求系统的零输入响应和脉冲响应。
%程序如下:
a=[0,1;
-10,-2];
b=[0;
1];
c=[1,0];
d=[0];
x0=[1,0];
subplot(1,2,1);
initial(a,b,c,d,x0);
subplot(1,2,2);
impulse(a,b,c,d);
5:
系统传递函数为:
输入正弦信号时,观察输出信号的相位差。
num=[1];
den=[1,1];
t=0:
0.01:
10;
u=sin(2*t);
holdon
plot(t,u,'
r'
lsim(num,den,u,t)
6.有一二阶系统,求出周期为4秒的方波的输出响应
num=[251];
den=[123];
t=(0:
0.1:
10);
period=4;
u=(rem(t,period)>
=period./2);
%看rem函数功能
lsim(num,den,u,t);
7.已知开环系统传递函数,绘制系统的根轨迹,并分析其稳定性
num=[12];
den1=[143];
den=conv(den1,den1);
figure
(1)
rlocus(num,den);
[k,p]=rlocfind(num,den)
figure
(2)
k=55;
num1=k*[12];
den=[143];
den1=conv(den,den);
[num,den]=cloop(num1,den1,-1);
impulse(num,den);
title('
impulseresponse(k=55)'
figure(3)
k=56;
impulseresponse(k=56)'
Selectapointinthegraphicswindow
selected_point=
2.0142-8.1739i
k=
766.4105
p=
-11.2238
2.6126+7.8623i
2.6126-7.8623i
-2.0013
8.作如下系统的bode图:
n=[1,1];
d=[1,4,11,7];
bode(n,d);
9.系统传函如下
求有理传函的频率响应,然后在同一张图上绘出以四阶伯德近似表示的系统频率响应
num=[1];
den=conv([12],conv([12],[12]));
w=logspace(-1,2);
t=0.5;
[m1,p1]=bode(num,den,2);
p1=p1-t*w'
*180/pi;
[n2,d2]=pade(t,4);
numt=conv(n2,num);
dent=(conv(den,d2));
[m2,p2]=bode(numt,dent,w);
subplot(2,1,1);
semilogx(w,20*log10(m1),w,20*log10(m2),'
g--'
gridon;
title('
bodeplot'
xlabel('
frequency'
ylabel('
gain'
subplot(2,1,2);
semilogx(w,p1,w,p2,'
gridon;
phase'
10.已知系统模型为
求它的幅值裕度和相角裕度
n=[3.5];
d=[1232];
[Gm,Pm,Wcg,Wcp]=margin(n,d)
Gm=
1.1433
Pm=
7.1688
Wcg=
1.7323
Wcp=
1.6541
11.二阶系统为:
令wn=1,分别作出ξ=2,1,0.707,0.5时的nyquist曲线。
n=[1];
d1=[1,4,1];
d2=[1,2,1];
d3=[1,1.414,1];
d4=[1,1,1];
nyquist(n,d1);
nyquist(n,d2);
nyq