Help with a rotation matrix

3 views (last 30 days)
Scott Hunter
Scott Hunter on 26 Oct 2018
Commented: Stephen23 on 10 Jul 2025
I have a code which requires 4 different rotation matrices, and since all my variables are in the form of arrays I'm trying to make these matrices also in the form of arrays. So far, the code I have below is what I believe should work. The parameters at the top are parameters for each of the 4 orbits, laid out in 1x4 array. R1, R2 and R3 are not giving me the answers I expect in all the cells (R1,2 and 3 will be combined to make R the final matrix). The matrices should have more zeros in them but I am getting a very very small number (10^-17) instead, I don't know where the maths is going wrong? Thanks! (.png attached at top).
clear
close
i = [90 90 90 90]; %[deg] Inclinations for each orbit
o = [0 0 0 0]; %[deg] Small omega of each orbit
O = [0 45 90 135]; %[deg] RAANs for each orbit
R1 = [cos(o).*cos(O)-sin(o).*cos(i).*sin(O); % Column 1 of rotation matrix for the 4 orbits
cos(o).*sin(O)+sin(o).*cos(i).*cos(O);
sin(o).*sin(i)];
R2 = [-sin(o).*cos(O)-cos(o).*cos(i).*sin(O); % Column 2 of rotation matrix for the 4 orbits
-sin(o).*sin(O)+cos(o).*cos(i).*cos(O);
cos(o).*sin(i)];
R3 = [sin(i).*sin(O); % Column 3 of rotation matrix for the 4 orbits
-sin(i).*cos(O);
cos(i)];
  15 Comments
Scott Hunter
Scott Hunter on 26 Oct 2018
Oh right I see thank you. Why is this a benefit?

Sign in to comment.

Accepted Answer

Bruno Luong
Bruno Luong on 26 Oct 2018
Edited: Bruno Luong on 26 Oct 2018
You seem to apply sin/cos to degree angles which is wrong, since argument must be in radian.
Also the code is correct and might returns small error when expected result is 0.
>> cos(pi/2)
ans =
6.1232e-17
PS: I put my comment here for you to accept if it solves your pb
  2 Comments
Scott Hunter
Scott Hunter on 26 Oct 2018
I will do! Maybe add in that my confusion was due to the error in accuracy?
Image Analyst
Image Analyst on 26 Oct 2018
You can use degrees. Just switch to the "d" versions of the trig functions: sind() and cosd().

Sign in to comment.

More Answers (1)

sanjay
sanjay on 10 Jul 2025
cos(pi/2)
ans =
6.1232e-17
  2 Comments
Steven Lord
Steven Lord on 10 Jul 2025
That's correct. If you want to compute the cosine or sine of an angle represented as a multiple of pi radians, you can use cospi and sinpi.
cos(pi/2)
ans = 6.1232e-17
cospi(1/2)
ans = 0
sin(pi)
ans = 1.2246e-16
sinpi(1)
ans = 0
Stephen23
Stephen23 on 10 Jul 2025
Or use degrees:
cosd(90)
ans = 0
sind(180)
ans = 0

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!