How to solve Differential Equations in Simulink level 2 s function
Ältere Kommentare anzeigen
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;
Antworten (2)
Kaustubha Govind
am 17 Aug. 2011
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 Kommentare
knight
am 18 Aug. 2011
majid taheri
am 28 Jul. 2017
How should be define, if one state has more than one dimension?
Juan Camilo Vega Nieto
am 30 Nov. 2017
Thanks; It is possible to solve a differencial ecuation of order two in a Matlab level 2 S-function? thank you very much.
knight
am 18 Aug. 2011
0 Stimmen
Kategorien
Mehr zu Configure C/C++ S-Function Features finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!