Help with a rotation matrix

3 次查看(过去 30 天)
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 个评论
Scott Hunter
Scott Hunter 2018-10-26
Oh right I see thank you. Why is this a benefit?

请先登录,再进行评论。

采纳的回答

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

请先登录,再进行评论。

更多回答(1 个)

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

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by