How to solve Differential Equations in Simulink level 2 s function
Mostrar comentarios más antiguos
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;
Respuestas (2)
Kaustubha Govind
el 17 de Ag. de 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 comentarios
knight
el 18 de Ag. de 2011
majid taheri
el 28 de Jul. de 2017
How should be define, if one state has more than one dimension?
Juan Camilo Vega Nieto
el 30 de Nov. de 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
el 18 de Ag. de 2011
0 votos
Categorías
Más información sobre Configure C/C++ S-Function Features en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!