(* Esta es una funcion que da el producto directo de dos matrices *)
DirectProduct[a_,b_]:=For[i=1;i0=Dimensions[a][[1]];j0=Dimensions[a][[2]];k0=Dimensions[b][[1]];l0=Dimensions[b][[2]];out=Array[f,{i0 k0,j0 l0}],i≤i0,i++,
For[k=1,k≤k0,k++,
For[j=1,j≤j0,j++,
For[l=1,l≤l0,l++,
out[[(i-1)k0+k,(j-1)l0+l]]=a[[i,j]]*b[[k,l]]
]]]]

(* Veamos que funcinoa bien *)

A={{a11,a12},{a21,a22}};
B={{b11,b12,b13},{b21,b22,b23},{b31,b32,b33}};
DirectProduct[A,B]
out

(* Ahora ingreso los generadores de SU(2) en la representacion de 2x2 y en la de 3x3, ojo que la de 3x3 NO ES la de rotaciones en la base x,y,z, sino que la de la base +1,0,-1 *)
σ1=(1/2){{0,1},{1,0}};
σ2=(1/2){{0,-I},{I,0}};
σ3=(1/2){{1,0},{0,-1}};
σ={σ1,σ2,σ3};
s1={{0,(1/(√2)),0},{(1/(√2)),0,(1/(√2))},{0,(1/(√2)),0}};
s2={{0,((-I)/(√2)),0},{(I/(√2)),0,((-I)/(√2))},{0,(I/(√2)),0}};
s3={{1,0,0},{0,0,0},{0,0,-1}};
s={s1,s2,s3};

(* Este es el cambio de base que sale de mirar la tabla de Clebsch-Gordan *)
c={{1,0,0,0,0,0},{0,√((2/3)),0,0,((-1)/(√3)),0},{0,0,(1/(√3)),0,0,-√((2/3))},{0,(1/(√3)),0,0,√((2/3)),0},{0,0,√((2/3)),0,0,(1/(√3))},{0,0,0,1,0,0}}

(* Ahora me genero un elemento al azar de SU(2) y me genero las matrices correspondientes en las representaciones de 2x2 y 3x3  *)
θ={Random[],Random[],Random[]};
dim2=MatrixExp[I θ.σ];
dim3=MatrixExp[I θ.s];
(* hago el producto directo de estas matrices y obtengo una de 6x6 toda mezclada *)
DirectProduct[dim2,dim3]
out
(* Pero hago el cambio de base de la base desacolpada a la acoplada y veo que la amtriz de diagonaliza por bloques!! *)
Transpose[c].out.c//Chop