Azzera filtri
Azzera filtri

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

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

Risposta accettata

Hernia Baby
Hernia Baby il 5 Ott 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 Commenti
Hernia Baby
Hernia Baby il 6 Ott 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
光貴 川島
光貴 川島 il 18 Ott 2021
ありがとうございます。無事解決しました。

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!