Passing a matrix as a parameter in ode15s

3 views (last 30 days)
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 ?

Accepted Answer

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

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!