Filter löschen
Filter löschen

S-functions with ode45 in Matlab

7 Ansichten (letzte 30 Tage)
Gigi Dioda
Gigi Dioda am 28 Jun. 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?

Akzeptierte Antwort

Gigi Dioda
Gigi Dioda am 28 Jun. 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

Weitere Antworten (1)

Arnaud Miege
Arnaud Miege am 28 Jun. 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 Kommentar
Gigi Dioda
Gigi Dioda am 28 Jun. 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).

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu General Applications finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by