単位ベクトルを回転行列で表現する方法

33 Ansichten (letzte 30 Tage)
光貴 川島
光貴 川島 am 5 Okt. 2021
Kommentiert: 光貴 川島 am 18 Okt. 2021
写真のような単位ベクトル(i,j,k)で作った座標系を、回転行列で表現したいと考えているのですが、どのような計算をMATLAB上で行えばよいのでしょうか?
今解析に用いているデータは一つの単位ベクトル(i,j,k)あたり3行、152列データがあり、このデータを3行3列の回転行列で表現する方法が分かりません。どなたか詳しい方がいらっしゃいましたらご教示ください。よろしくお願い致します。

Akzeptierte Antwort

Hernia Baby
Hernia Baby am 5 Okt. 2021
行列の回転と変換 のRx,Ry,Rzの掛け算で表されます
syms t x y z
Rx = [1 0 0; 0 cos(t) -sin(t); 0 sin(t) cos(t)]
Rx = 
Ry = [cos(t) 0 sin(t); 0 1 0; -sin(t) 0 cos(t)]
Ry = 
Rz = [cos(t) -sin(t) 0; sin(t) cos(t) 0; 0 0 1]
Rz = 
試しに(1,0,0)の単位座標をY軸周りに-90°回転させてみましょう
A = [1;0;0];
A_ry = subs(Ry*A,t,-pi/2)
A_ry = 
図示します
plot3([0 A(1)],[0 A(2)],[0 A(3)],'bo--')
hold on
plot3([0 A_ry(1)],[0 A_ry(2)],[0 A_ry(3)],'ro--')
xlim([0 1])
ylim([0 1])
zlim([0 1])
  4 Kommentare
Hernia Baby
Hernia Baby am 6 Okt. 2021
であれば上記式を使えば問題ありません。
少し実用的にしてみましょうか
Rx = @(t) [1 0 0; 0 cos(t) -sin(t); 0 sin(t) cos(t)];
Ry = @(t) [cos(t) 0 sin(t); 0 1 0; -sin(t) 0 cos(t)];
Rz = @(t) [cos(t) -sin(t) 0; sin(t) cos(t) 0; 0 0 1];
変換前の3×4の行列Aを作ります
これは3×1のベクトルを4つ並べたイメージです
A = [[1;0;0] [0;1;0] [0;0;1] [1;1;1]]
A = 3×4
1 0 0 1 0 1 0 1 0 0 1 1
pi/2ずつ回転させます
Ar = Rx(pi/2)*Ry(pi/2)*Rz(pi/2)*A
Ar = 3×4
0.0000 -0.0000 1.0000 1.0000 0.0000 -1.0000 -0.0000 -1.0000 1.0000 0.0000 0.0000 1.0000
光貴 川島
光貴 川島 am 18 Okt. 2021
ありがとうございます。無事解決しました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!