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

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

 Akzeptierte Antwort

Hernia Baby
Hernia Baby am 5 Okt. 2021

0 Stimmen

行列の回転と変換 の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 5 Okt. 2021
すみません、よく内容読めてなかったみたいです ここでいう回転行列とは何でしょうか?
光貴 川島
光貴 川島 am 6 Okt. 2021
ご返信いただきありがとうございます。
写真のようにX軸を中心にY、Z軸をα度だけ回転させたときのRxを回転行列としています。
この作業をY軸周り(β度)、Z軸周り(γ度)も同様に行い、回転させた時の回転行列をそれぞれRy、Rzとし、それらの積RxRyRZを求めて回転後の座標を求めたいと考えています。
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!