Error using matrix dimensions

2 views (last 30 days)
Ajay
Ajay on 5 Apr 2015
Commented: Ajay on 5 Apr 2015
clc;
clear all;
d1=200;
d2=1;
a3=135;
a4=135;
a5=135;
theta2=linspace(0,350,50);
theta3=linspace(0,180,40);
theta4=linspace(0,270,40);
theta5=linspace(0,180,40);
c2=cosd(theta2)
c3=cosd(theta3);
c5=cosd(theta5);
c34=cosd(theta3+theta4);
s2=sind(theta2);
s3=sind(theta3);
s5=sind(theta5);
s34=sind(theta3+theta4);
px = (a3.*(c2.*c3))-(a5.*((s2.*s5)-(c5.*c2.*c34)))+(a4.*c2.*c34);
py = (a3.*c3.*s2)+(a5.*(c5.*s2.*c34)+(c2.*s5))+(a4.*s2.*c34);
pz = d1(ones(1,50)) + d2 + (a3.*s3)+(a5.*c5.*s34)+(a4.*s34);
[EDITED, Jan, please use a proper code formatting - thanks]

Accepted Answer

Geoff Hayes
Geoff Hayes on 5 Apr 2015
Venkata - the error message is
Error using .*
Matrix dimensions must agree.
Error in *** (line 20)
px = (a3.*(c2.*c3))-(a5.*((s2.*s5)-(c5.*c2.*c34)))+(a4.*c2.*c34);
Note that this line of code is doing several incorrect element-wise multiplications between arrays that are 1x40 and 1x50 which is incorrect. If you want to use the .* then left and right operands must be of the same dimension or at least one must be a scalar. Put a breakpoint in your code (at this line) and run the above. When the debugger pauses at this line look at all the variables and ask yourself if their dimensions make sense given the problem that you are trying to solve.
  7 Comments
Geoff Hayes
Geoff Hayes on 5 Apr 2015
I'm not clear on what you mean in your above statement. What do you mean by if i am using breakpoint also it is not executing?
Ajay
Ajay on 5 Apr 2015
I am using breakpoint on that line with a red dot on the code line number and then executing the line, then also i am getting the error as "matrix dimensions must agree"

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!