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!