Help with a rotation matrix

7 Ansichten (letzte 30 Tage)
Scott Hunter
Scott Hunter am 26 Okt. 2018
Kommentiert: Stephen23 am 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 Kommentare
Scott Hunter
Scott Hunter am 26 Okt. 2018
Oh right I see thank you. Why is this a benefit?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Bruno Luong
Bruno Luong am 26 Okt. 2018
Bearbeitet: Bruno Luong am 26 Okt. 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 Kommentare
Scott Hunter
Scott Hunter am 26 Okt. 2018
I will do! Maybe add in that my confusion was due to the error in accuracy?
Image Analyst
Image Analyst am 26 Okt. 2018
You can use degrees. Just switch to the "d" versions of the trig functions: sind() and cosd().

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

sanjay
sanjay am 10 Jul. 2025
cos(pi/2)
ans =
6.1232e-17
  2 Kommentare
Steven Lord
Steven Lord am 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 am 10 Jul. 2025
Or use degrees:
cosd(90)
ans = 0
sind(180)
ans = 0

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by