Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Error using mtimes

Asked by Nourriee BB on 9 Oct 2011

This is the script I am currently processing through MATLAB however it keeps returning me an error that says : ??? Error using ==> mtimes Inner matrix dimensions must agree.

Error in ==> Complexmodel at 12 T1=((elevator_mass+load_mass1)*g+X)*a;

My script:

g=9.81;
elevator_mass=1000;
load_mass1=1500;
load_mass2=2000;
load_mass3=2500;
safe_load=4500;
u=0.6:1:1.6;
a=0:1:10;
safty(1:11)=safe_load;
X=3.*u.^2;
xlabel_information='Elevator acceleration';
T1=((elevator_mass+load_mass1)*g+X)*a;
T2=((elevator_mass+load_mass2)*g+X)*a;
T3=((elevator_mass+load_mass3)*g+X)*a;
plot(a,T1,'b-o',a,T2,'g-o',a,T3,'k-o',a,safty,'.');
xlabel(xlabel_information)
ylabel('Cable Tension')
title('Tension vs Acceleration');
legend('load mass 1','load mass 2','load mass 3','Safe load');

[EDITED, JSimon, 09-Oct-2011 16:19 UTC] Code formatted - please do this by your own, see Markup help

0 Comments

Nourriee BB

Products

No products are associated with this question.

2 Answers

Answer by Jan Simon on 9 Oct 2011
Accepted answer

You could use the debugger to locate the problem:

dbstop if error

Now MATLAB stops, if the error occurs and you can inspect the dimensions:

In: T1=((elevator_mass+load_mass1)*g+X)*a;
((elevator_mass+load_mass1)*g+X  => [1 x 2]
a => [1 x 11]

Of course the multiplication is not possible.

4 Comments

Walter Roberson on 9 Oct 2011

Andrei's version looks plausible, but you will need to decide whether you want .* (element by element multiplication) or if you want bsxfun() (create array with all of the combinations of values), or if you want to transpose one of the vectors and do a matrix multiplication.

Nourriee BB on 10 Oct 2011

if i were to do a matrix multiplication. What would I need to change in my script to make it possible?

Walter Roberson on 10 Oct 2011

if you have two vectors, A and B, each 1 x 11, then you can either do

A * B'

to get a 1 x 1 result,

or you can do

A' * B

to get an 11 x 1 result.

Jan Simon
Answer by Andrei Bobrov on 9 Oct 2011
u=0.6:.1:1.6

0 Comments

Andrei Bobrov

Contact us