a1=-10;
a2=10;
a3=00;
l=05;
j1=10;
j2=10;
j3=20;
delta_1=05x(2)+15sign(x(2));
delta_2=05x(4)+15sign(x(4));
delta_3=05x(6)+15sign(x(6));
dx=zeros(9,1);
dx(1)=x(2);
dx(2)=1/j1(a1x(4)x(6)-lx(4)+x(7)+delta_1);
dx(3)=x(4);
dx(4)=1/j2(a2x(2)x(6)-lx(2)+x(8)+delta_2);
dx(5)=x(6);
dx(6)=1/j3(a3x(2)x(4)+x(9)+delta_3);
dx(7)=0;
dx(8)=0;
dx(9)=0;
dx=[dx(1);dx(2);dx(3);dx(4);dx(5);dx(6);dx(7);dx(8);dx(9)];
end
控制程序
clear
tic
ts=001;
kk=1000;
tt=0:ts:ts(kk-1);
x10=001;
x20=00;
x30=001;
x40=00;
x50=001;
x60=00;
gamma=-500;
thea_10=05;
thea_20=05;
thea_30=05;
for ii=1:1:kk
xd=sin(pits(ii-1));
dxd=picos(pits(ii-1));
ddxd=-1pipisin(pits(ii-1));
e10=x10-xd;
de10=x20-dxd;
q10=dxd-15e10;
dq10=ddxd-15de10;
s10=de10+15e10;
e30=x30-xd;
de30=x40-dxd;
q30=dxd-15e30;
dq30=ddxd-15de30;
s30=de30+15e30;
e50=x50-xd;
de50=x60-dxd;
q50=dxd-15e50;
dq50=ddxd-15de50;
s50=de50+15e50;
thea1p=thea_10+gammadq10s10ts;
thea2p=thea_20+gammadq30s30ts;
thea3p=thea_30+gammadq50s50ts;
% x70=thea1pdq10+x40x60+05x40-15s10-201sign(s10);
% x80=thea2pdq30-x20x60+05x20-15s30-201sign(s30);
% x90=thea3pdq50+x20x40-15s50-201sign(s50);
x70=dq10+x40x60+05x40-15s10-201sign(s10);
x80=dq30+x20x60+05x20-15s30-201sign(s30);
x90=dq50+x20x40-15s50-201sign(s50);
[t,x]=ode45('liuxiaomodel',[(ii-1)ts,iits],[x10;x20;x30;x40;x50;x60;x70;x80;x90]);
[m,n]=size(x);
x10=x(m,1);
x20=x(m,2);
x30=x(m,2);
x40=x(m,2);
x50=x(m,2);
x60=x(m,2);
% thea_10=thea1p;
% thea_20=thea2p;
% thea_30=thea3p;
out1(ii)=x10;
out2(ii)=x20;
out3(ii)=x30;
out4(ii)=x40;
out5(ii)=x50;
out6(ii)=x60;
out7(ii)=x70;
out8(ii)=thea1p;
end
figure(1),plot(tt,out1),grid
figure(2),plot(tt,out3),grid
figure(3),plot(tt,out5),grid
figure(4),plot(tt,out7),grid
figure(5),plot(tt,out8),grid
toc
采用注释部分没有运行结果,如同进入死循环为何?求教!!Simulink的命令行仿真方式:
[t,x,y]=sim('modelname')
利用对话框参数进行仿真,返回输出矩阵;
[t,x,y]=sim('modelname', timespan, options, ut)
利用输入参数进行仿真,返回输出矩阵;
[t,x,y1,y2,yn]=sim('modelname', timespan, options, ut)
利用输入参数进行仿真,返回逐个输出;
参数说明:
'modelname' 运行的模型名(不包含扩展名),必须在Matlab的搜索路径上。
timespan 指定仿真的时间区间,可以采取以下几种格式:
(1)[] 空,利用模型对话框设置时间;
(2)T_final 标量,制定终止仿真时间;
(3)[T_start T_final] 二元向量,指定仿真时间区间;
(4)outputTimes 任何指定输出时间记录点的向量。
options MATLAB特定的一种数据结构,具有最高优先权,可以覆盖模型参数对话框中的设置。
ut 赋给仿真对象数入口模块的量,具有最高优先设置,它是形为[t,u1,u2]的数值矩阵,每个为时间序列或输入序列。方法/步骤如下
1、首先打开matlab软件,点击Simulink按钮打开Simulink仿真环境(需要一点时间),如下图所示:
2、打开Simulink后,主界面如下所示:
3、点击Simulink界面中的File/New/Model,如下图所示建立并保存模型文件:
4、在Simulink的左侧资源栏拖拽控件到model文件内并设置连线,完成后如下图所示:
5、检查系统框图无误后点击运行按钮(如下图箭头所指),大概几秒后仿真结束:
6、双击图中的示波器就可以查看系统仿真输出安装完MATLAB软件后,在电脑桌面点击MATLAB快捷方式
打开MATLAB后,点击Simulink Library按钮
之后会进入Simulink模块库界面,点击新建模型
接下来,我们就会看到新模型的 *** 作界面,我们只需在模块库中选择我们所需要的模块,搭建模型就可以了
下面我们搭建一个简单的正弦波显示的模型,我们先在模块库中选择Simulink库中的Sources库,选择Sine Wave,将其拖拽到新模型中
接着在Simulink库中选择Sinks库,选择Scope模块,拖拽到新模型中
在新模型中,将两个模块连接起来,点击运行按钮即可按运行快捷键F5即可实现仿真图。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)