Keep getting this error and I cannot figure out why: Dimensions of arrays being concatenated are not consistent.

I have the following code trying to solve differential equation of second order:
[t,X] = ode45(@(t,X) odefun_4(t,X,u), [0 10], [0;0]);
function dx = odefun_4(t,x,u)
%xdisp(u);
m = 15;
b = 0.2;
k = 2;
%u = interp1(ut,u,t);
dx = [x(2); u/m - (b/m)*x(2) - (k/m)*x(1)];
end
Vector u is a 1x100 vector. I expect to get a 2x100 matrix as the return value. What am I doing wrong ?

 Accepted Answer

EDITED
m = 15;
b = 0.2;
k = 2;
ut = linspace(0, 10);
u = 5 * sin(2 * ut) + 10.5; % input of our system - external forc
dx = @(t,x,u)[x(2); u/m - (b/m)*x(2) - (k/m)*x(1)]
for u=u
[t,X] = ode45(@(t,x)dx(t,x,u), [0 10], [0;0]); %function calling
plot(t,X)
hold on
end

11 Comments

Why scalar ? I am simulating a system and I want to get one output value for each input value.
provide u values , plus your solution returns is 57 by 2 matrix how can you concatenate 1 by 100 in that matrix ?
u is created like this:
ut = linspace(0, 10);
u = 5 * sin(2 * ut) + 10.5; % input of our system - external force
Tried the edited version of your answer and got this:
@(T,X)ODEFUN_4(T,X,U) returns a vector of length 1, but the length of initial conditions vector is 2. The vector returned by @(T,X)ODEFUN_4(T,X,U) and the initial conditions vector must have the same number of elements.
Did you try my edited answer? I got the graph. Make sure to accept the answer if you got the answer to your question.
Yes, now I got the graph. I wonder why I don't get 100 values as output since I use 100 values as input.
Each plot represents the change in the system according to each force this is the only way to solve your problem because the reason is like I told you before you can't put column vector with 100 values into a matrix of lesser column elements
Anytime :) make sure to accept the answer so that people know the question is solved

Sign in to comment.

More Answers (0)

Products

Release

R2018a

Community Treasure Hunt

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

Start Hunting!