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

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

 Accepted Answer

Hernia Baby
Hernia Baby on 5 Oct 2021

0 votes

行列の回転と変換 の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 Comments

Hernia Baby
Hernia Baby on 5 Oct 2021
すみません、よく内容読めてなかったみたいです ここでいう回転行列とは何でしょうか?
光貴 川島
光貴 川島 on 6 Oct 2021
ご返信いただきありがとうございます。
写真のようにX軸を中心にY、Z軸をα度だけ回転させたときのRxを回転行列としています。
この作業をY軸周り(β度)、Z軸周り(γ度)も同様に行い、回転させた時の回転行列をそれぞれRy、Rzとし、それらの積RxRyRZを求めて回転後の座標を求めたいと考えています。
であれば上記式を使えば問題ありません。
少し実用的にしてみましょうか
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
光貴 川島
光貴 川島 on 18 Oct 2021
ありがとうございます。無事解決しました。

Sign in to comment.

More Answers (0)

Products

Release

R2020b

Community Treasure Hunt

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

Start Hunting!