Passing a matrix as a parameter in ode15s

4 visualizzazioni (ultimi 30 giorni)
I am trying to pass a matrix of the same dimension as the output value of vx in the code below. I have attached my code for both the script (where the ode15s function is called) and the contents of my called function that returns the output for x_val and vx. Its showing me this error -
Error using odearguments (line 93)
@(X_VAL,VX)ODE_X(X_VAL,VX,VFX) must return a column vector.
The code -
% in the script
psi = norm(vf)*(y-2+m*atan2(y-2,x-2+a)-m*atan2(y-2,x-2-a));
[vfy1,vfx1] = gradient(psi);
vfy= -1*vfy1;% 10 x 10 matrix
vfx = vfx1;% 10 x 10 matrix
vpx0 = 5.*(ones(10,1));
x_range =linspace(1,3,10) ;
[x_val,vx] = ode15s(@(x_val,vx) ode_x(x_val,vx,vfx), x_range, vpx0); % vfx is to be passed as a whole to the ode15s function
% function called
function dvdx = ode_x(x,vx,vfx)
dvdx = (vfx./vx - 1); % here I need to divide each value of vfx by resultant value of vx. But because of inconsistent dimensions I am unable to do that
end
How do I solve this issue ?

Risposta accettata

Walter Roberson
Walter Roberson il 30 Mag 2020
function dvdx = ode_x(x,vx,vfx)
dvdx = reshape(vfx./reshape(vx, size(vfx)) - 1), [], 1);
end
  1 Commento
Sanjana Singh
Sanjana Singh il 30 Mag 2020
I am getting this error using this correction-
Error using reshape
To RESHAPE the number of elements must not change.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by