Effacer les filtres
Effacer les filtres

S-functions with ode45 in Matlab

7 vues (au cours des 30 derniers jours)
Gigi Dioda
Gigi Dioda le 28 Juin 2011
Hi, all! I have a dynamical system written in an S-function and I want to simulate it in a Matlab loop. I use ode45 on the S-function and it seems to work (it runs with no errors). However it's not the result I was expecting. After that, I took the code from the S-function and plugged into a regular dx = f(t,x,u) function and when I applied ode45 to f, I got what I was looking for.
So, my question: what's wrong with applying ode45 to an S-function?

Réponse acceptée

Gigi Dioda
Gigi Dioda le 28 Juin 2011
Ok, I solved it by creating a new function handle to the S-function.
Smth like:
f = @(t,x,u,params)SfunctionName(t,x,u,1,params{:});
[Tk,Xk] = ode45(f, [T(k) T(k+1)], x, options, U(k), params);
Best

Plus de réponses (1)

Arnaud Miege
Arnaud Miege le 28 Juin 2011
You don't need to "apply" ode45 to an S-function since Simulink has its own solver. See Writing S-Functions in MATLAB in the documentation.
HTH,
Arnaud
  1 commentaire
Gigi Dioda
Gigi Dioda le 28 Juin 2011
Thanks for the answer, Arnaud. However, I want to use the S-function in Matlab, without calling sim on a block comprising the S-function. Basically, I want to use the S-function in Matlab just as a regular ode in the form dx = f(t,x,u).

Connectez-vous pour commenter.

Catégories

En savoir plus sur General Applications dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by