1

How I can find the euler angles from a random 2x2 ZYZ rotation matrix? We know that all SU(2) matrices can be decomposed, using the ZYZ decomposition, as a three matrices product based in euler angles. In the Wikipedia about euler angles:

"A similar three angle decomposition applies to SU(2), the special unitary group of rotations in complex 2D space, with the difference that β ranges from 0 to 2π. These are also called Euler angles."

I have did try do a equations system in the matlab, but it found the solution in some cases (pauli matrices) and in many other not. It never find to a random SU(2) matrix.

Anybody know a general approach? I already did found how to do 3x3 matrices, but not for 2x2 ZYZ.

Best regards!

user901366
  • 91
  • 2
  • 12
  • Am I missing something? There is only one possible rotation for 2x2 matices. Only rotation about Z can be represented. Can you give an example so we can understand. – John Alexiou Jan 30 '13 at 19:04
  • Of course. All SU(2) matrix can be, ignoring a global phase factor, decomposed as: U = e^{-i/2 * t1 * Z} * e^{-i/2 * t2 * Y} * e^{-i/2 * t3 * Z}, where Y and Z are Pauli matrices, Y = [0 -i; i 0] e Z = [1 0; 0 -1]. This is the ZYZ rotation. – user901366 Jan 31 '13 at 15:02
  • Yeah, you might want to put all this in the original question, and include references as it is critical to an answer. – John Alexiou Jan 31 '13 at 19:45

1 Answers1

0

from https://groups.google.com/forum/?fromgroups=#!topic/mathtools/q25a5WoG6Eo, written by Haifeng GONG (didn't you find it by yourself):

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 

As can be seen here and here There is an isomorphism between SO(3) and SU(2):

enter image description here

0x90
  • 39,472
  • 36
  • 165
  • 245
  • Hi friend, thanks, but this algorithm is for 3d rotation. I need for 2x2 complex matrices. – user901366 Jan 31 '13 at 14:56
  • The transition between 2d to 3d is to set one of the axis has a const plane let say z=0, do it carefully – 0x90 Jan 31 '13 at 18:44
  • Excuse-me, I not understand. Could I convert the complex 2x2 matrix U = [0.2762 + 0.2832i 0.6413 + 0.6575i; -0.6413 + 0.6575i 0.2762 - 0.2832i] to a 3x3 real matrix and apply the above approach? – user901366 Feb 01 '13 at 13:55
  • you can do it in a lot of ways, you can insist that the rotation according to z will be 2pi or zero let's say. doesn't make sense for you? – 0x90 Feb 01 '13 at 14:03
  • Excuse-me again, but not. I don't kwnow well this rotation context, my need is in another context, but I ask using rotations to be more common. Could you give a sample using the 2x2 matrix U of the comment above? Thanks! – user901366 Feb 02 '13 at 02:34
  • Hi friend, excellent references! I did a test with some cases and results were not ideal, but satisfactories :-)). Thank you by attention. – user901366 Feb 02 '13 at 14:48
  • Can you share with us, what did you do by the end? – 0x90 Feb 02 '13 at 14:51
  • 1
    Of course. I use the map defined in the page 4 of [this reference](http://www.mat.univie.ac.at/~westra/so3su2.pdf) to transform a 2x2 complex matrix in a 3x3 real rotation matrix. Then I use [this](http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors) matlab implementation to extract euler angles. But it does not work for all the cases.. :( If I try with Pauli matrices I don't get know values. :( – user901366 Feb 03 '13 at 16:35
  • Hi, what you need? I do exactally what I say above, I use the last equation of the page 4. Do you want the code? How I can format code here? – user901366 Feb 05 '13 at 18:18
  • Post an answer by clicking answer your question and put your code and explain it. – 0x90 Feb 05 '13 at 19:08