来自2x2 ZYZ旋转矩阵的欧拉角?

时间:2013-01-30 18:48:24

标签: matlab matrix linear-algebra rotatetransform euler-angles

如何从随机2x2 ZYZ旋转矩阵中找到欧拉角?我们知道所有SU(2)矩阵都可以使用ZYZ分解作为基于欧拉角的三个矩阵积分解。在维基百科中关于欧拉角:

“类似的三角分解适用于SU(2),即复杂2D空间中特殊的单位旋转组,差别在于β的范围为0到2π。这些也称为欧拉角。”

我已经尝试在matlab中做一个方程式系统,但它在某些情况下(pauli矩阵)找到了解决方案,而在许多其他情况下没有找到解决方案。它永远不会找到随机的SU(2)矩阵。

有人知道一般方法吗?我已经找到了如何做3x3矩阵,但不是2x2 ZYZ。

祝你好运!

1 个答案:

答案 0 :(得分:0)

来自https://groups.google.com/forum/?fromgroups=#!topic/mathtools/q25a5WoG6Eo

,由郝海峰撰写(你不是自己找到的):

function orthm = ang2orth(ang) 

sa = sin(ang(2)); ca = cos(ang(2)); 
sb = sin(ang(1)); cb = cos(ang(1)); 
sc = sin(ang(3)); cc = cos(ang(3)); 

ra = [  ca,  sa,  0; ... 
       -sa,  ca,  0; ... 
         0,   0,  1]; 
rb = [  cb,  0,  sb; ... 
         0,  1,  0; ... 
       -sb,  0,  cb]; 
rc = [  1,   0,   0; ... 
        0,   cc, sc;... 
        0,  -sc, cc]; 
orthm = rc*rb*ra; 

function ang = orth2ang(orthm) 
ang(1) = asin(orthm(1,3)); %Wei du 
ang(2) = angle( orthm(1,1:2)*[1 ;i] ); %Jing Du 
yz = orthm* ... 
    [orthm(1,:)',... 
     [-sin(ang(2)); cos(ang(2)); 0],... 
     [-sin(ang(1))*cos(ang(2)); -sin(ang(1)*sin(ang(2))); 
cos(ang(1))] ]; 

ang(3) = angle(yz(2,2:3)* [1; i]); % Xuan Du 

可以看到herehere There is an isomorphism between SO(3) and SU(2)

enter image description here