MATLAB: I have a dynamic system. The equation is ddot = (M)\(F – K*d); Where M,K are (4,4) constant matrix and F and d are vector. I want to solve this equation using ODE45.

MATLABodeode45

In my case The force vector F is variable. The values are changing with time. So to solve ode I've used a for loop. To update the solution of ODE45 I need to use something like this 'T(i,:)'. but it's showing an error 'Subscripted assignment dimension mismatch.' How can I solve an ode for variable dc input?
for i = 1:100
p1 = (power.dat)';
F = p1(:,i);
d0 = [333,333,333,333];
tspan = 0:0.1:1;
[t,T(i,:)] = ode45('Heat',tspan,d0);
end

Best Answer

When you use more than two entries in tspan (as you have done here), the second output of ode45 will be length(tspan) by length(d0) -- that is, it will have the integrals of each of the 4 elements, at each of the time steps. If you only need one of those 4 columns, then output to a variable and select the column you need.
Related Question