Ode45 iteration issue

1 visualizzazione (ultimi 30 giorni)
buszcini
buszcini il 17 Mag 2019
Commentato: madhan ravi il 19 Mag 2019
Hi,
I'm trying to solve differential equation using ode45 function, the formula looks like this:
[t1,X2] = ode45(@(t,x)fun(t,x,C1,C2,C3,C4),t0,X01);
where parameters C1, C2, C3 and C4 are column vector in size of 1:1001. What I want to do is I need to put them inside of function that ode45 is referring (fun.m) to and use them in equation, but I want the values to change after every iteration. So, for example, at the beginning C1 value I want in is C1(1), the next iteration it's C1(2), next iteration it's C1(3) etc. Is there any way to implement that?

Risposta accettata

madhan ravi
madhan ravi il 17 Mag 2019
[t1,X2]=deal(cell(numel(C1),1));
for k = 1:numel(C1)
[t1{k},X2{k}] = ode45(@(t,x)fun(t,x,C1(k),C2(k),C3(k),C4(k)),t0,X01);
end
  1 Commento
madhan ravi
madhan ravi il 19 Mag 2019
Update
The code has worked properly, but then after some changes it started to give me 1001x1 cell that has only brackets, like this "[]" and each bracket is empty inside.
The code looks like this
[t1,X2]=deal(cell(numel(C1),1));
[t1,X2]=deal(cell(numel(C2),1));
[t1,X2]=deal(cell(numel(C3),1));
[t1,X2]=deal(cell(numel(C4),1));
for k = 1:numel(C1)
[t1{k},X2{k}] = ode45(@(t,x)fun(t,x,C1(k),C2(k),C3(k),C4(k)),t0,X01);
end
Each C is 1x1001 double and has values in it.
That is called preallocation. You don’t need to use the above lines 4 times "ONCE" is enough. You should be seeing values in t1 & X2.
I'm not quite sure if I understand, but even if I do it once it won't pass the proper values to the function (the X2 which is cell has just brackets, as I said) making the results wrong. Going further, if I do the line only once for example C1, how does it pass parameter C2 values to the function?
I have shown the standard procedure and I can't read your mind without knowing your entire code and the changes you made.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Tag

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by