How to solve Differential Equations in Simulink level 2 s function
显示 更早的评论
equations:
dx/dt=V*cos(theta)*cos(psi)
dy/dt=V*sin(theta)
dz/dt=-V*cos(theta)*sin(psi)
According to the s function demo--- msfcndemo_limintm.mdl.
I wrote my s function code
...........
%%Setup Dwork
block.NumContStates = 3;
.........
function InitConditions(block)
%%Initialize Dwork
block.ContStates(1).Data = 0;
block.ContStates(2).Data = 0;
block.ContStates(3).Data = 0;
.......................
function Output(block)
block.OutputPort(1).Data = block.ContStates(1).Data;
block.OutputPort(2).Data = block.ContStates(2).Data;
block.OutputPort(3).Data = block.ContStates(3).Data;
%endfunction
function Derivative(block)
..................
block.Derivatives(1).Data =V*cos(theta)*cos(psi)
block.Derivatives(2).Data =V*sin(theta)
block.Derivatives(3).Data =-V*cos(theta)*sin(psi)
..................
when we run this model, the Error is: no ContStates method;
回答(2 个)
Kaustubha Govind
2011-8-17
Change your InitConditions callback to:
function InitConditions(block)
%%Initialize Dwork
block.ContStates.Data(1) = 0;
block.ContStates.Data(2) = 0;
block.ContStates.Data(3) = 0;
Everything else looks good.
3 个评论
knight
2011-8-18
majid taheri
2017-7-28
How should be define, if one state has more than one dimension?
Juan Camilo Vega Nieto
2017-11-30
Thanks; It is possible to solve a differencial ecuation of order two in a Matlab level 2 S-function? thank you very much.
类别
在 帮助中心 和 File Exchange 中查找有关 Configure C/C++ S-Function Features 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!