Wiered Matlab Matrix Multiplication
Show older comments
t = linspace(0, 1, 100);
theta1 = linspace(0, 90, 100);
theta2 = linspace(0, 180, 100);
dtheta1 = t;
dtheta2 = 2*t;
ddtheta1 = 1;
ddtheta2 = 2;
T1 = zeros(100,1);
T2 = zeros(100,1);
m_1 = 10;
m_2 = 20;
l_1 = 5;
l_2 = 5;
g = 9.81;
for i = 1:100
M = [m_2*l_2^2 + 2*m_2*l_1*l_2*cos(theta2(i)) + (m_1 + m_2)*l_1^2, m_2*l_2^2 + m_2*l_1*l_2*cos(theta2(i));
m_2*l_2^2 + m_2*l_1*l_2*cos(theta2(i)), m_2*l_2^2 ];
% invM = inv(M);
G = [m_2*l_2*g*cos(theta1(i) + theta2(i)) + (m_1 + m_2)*l_1*g*cos(theta1(i)); m_2*l_2*g*cos(theta1(i) + theta2(i))];
C = [-m_2*l_1*l_2*sin(theta2(i))*dtheta1(i)^2 - 2*m_2*l_1*l_2*sin(theta2(i))*dtheta1(i)*dtheta2(i); m_2*l_1*l_2*sin(theta2(i))*dtheta1(i)^2];
M*[ddtheta1; ddtheta2] + C + G
end
I don't know why the last statement sometimes prints 2*1 but sometimes give something like this:
ans =
1.0e+03 *
5.2709
2.9356
Any suggestion where is this e terms coming from?
FYI: M is 2*2, G = 2*1, C = 2*1 matrices;
2 Comments
Roger Stafford
on 19 Nov 2017
The variables theta1 and theta2 are clearly meant to be in degrees, but you are using them as arguments for Matlab's 'cos' and 'sin' functions, which are intended to receive arguments in radians. That will give you a serious computation error.
Sonu Patidar
on 19 Nov 2017
Answers (1)
KL
on 19 Nov 2017
it is coming from
M*[ddtheta1; ddtheta2] + C + G
4 Comments
Sonu Patidar
on 19 Nov 2017
KL
on 19 Nov 2017
e stands for exponent
John D'Errico
on 19 Nov 2017
Exponential notation.
Sonu Patidar
on 19 Nov 2017
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!