Clear Filters
Clear Filters

how to solve this error ?

2 views (last 30 days)
Mallouli Marwa
Mallouli Marwa on 13 Jun 2016
Commented: Mallouli Marwa on 13 Jun 2016
Hi
I have this function then m and k are an input matrices having dimension (12,12) but an error message is displayed
like : Error using *
Inner matrix dimensions must agree.
Error in equabeam1 (line 9)
xdot = A*x+B*f;
Error in @(t,x)equabeam1(t,x,m,k)
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
function xdot = equabeam1(t,x,m,k)
% Function file for mass with spring.
% Position is first variable, velocity is second variable
freq=100; %frequency (Hz)
w=2*pi*freq;
A = [zeros(12,12),ones(12,12);-m^-1*k,zeros(12,12)];
B = [zeros(12,1);m^-1*ones(12,1)];
f =sin(w*t);
xdot = A*x+B*f;
end
[m,k,idof]=beam1(node,elt,pe,ie,opt)
[t,x] = ode45(@(t,x) equabeam1(t,x,m,k),[0,10],[0,0])
figure;
plot(t,x(:,1))
Please help me

Accepted Answer

Walter Roberson
Walter Roberson on 13 Jun 2016
You construct your A as 24 by 24, and you do a matrix multiplication by x which is going to be 2 x 1 because your x0 of [0,0] is length 2. There is no way to multiply a 24 x 24 by a 2 x 1.
Note: I see you use m^-1 where m is a 12 x 12 matrix. That is equivalent to doing inv(m) which is an error prone operation. Instead of
-m^-1*k
you should be using
-(m\k)
and instead of
m^-1*ones(12,1)
you should be using
m\ones(12,1)
  5 Comments
Walter Roberson
Walter Roberson on 13 Jun 2016
It looks to me as if you need to redesign your function. Remember you need to have as many output values as you have x input values, but your code appears to me to be designed to output only half as many outputs as inputs. But then it is not clear to me what your m and k are or where you are using the velocity information your comments mention. Your m sort of looks like a mass matrix?? If so then there are other ways of handling those; see http://www.mathworks.com/help/matlab/ref/odeset.html#zmw57dd0e573778
Mallouli Marwa
Mallouli Marwa on 13 Jun 2016
m= mass matrix k= stiffness matrix

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!