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

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

Accepted Answer

Hernia Baby
Hernia Baby on 5 Oct 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 Comments
Hernia Baby
Hernia Baby on 6 Oct 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
光貴 川島
光貴 川島 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!