Matlab 按特定顺序将复杂矩阵和向量一起排序

Matlab 按特定顺序将复杂矩阵和向量一起排序,matlab,sorting,matrix,vector,complex-numbers,Matlab,Sorting,Matrix,Vector,Complex Numbers,如何将向量e和矩阵v一起排序,这是我们必须考虑的:每个特征值对应于矩阵v中的特征向量,如图所示 v = 0.9978 + 0.0022i 0.9978 - 0.0022i 0.9179 - 0.0199i 0.9179 + 0.0199i -0.4665 + 0.0050i -0.4665 - 0.0050i 0.9805 - 0.0195i 0.9805 + 0.0195i -0.0003 - 0.0025i -0.0003 + 0.0025i -0.0008 -

如何将向量e和矩阵v一起排序,这是我们必须考虑的:每个特征值对应于矩阵v中的特征向量,如图所示

v =

 0.9978 + 0.0022i   0.9978 - 0.0022i   0.9179 - 0.0199i   0.9179 + 0.0199i
-0.4665 + 0.0050i  -0.4665 - 0.0050i   0.9805 - 0.0195i   0.9805 + 0.0195i
-0.0003 - 0.0025i  -0.0003 + 0.0025i  -0.0008 - 0.0162i  -0.0008 + 0.0162i
 0.0001 + 0.0012i   0.0001 - 0.0012i  -0.0008 - 0.0173i  -0.0008 + 0.0173i
所以我们可以说,例如特征值e1,1对应于特征向量v:,1。图中是向量e_排序和矩阵v_排序,按特定顺序排列,我需要它

该规则适用于向量e: 首先必须是:

 -a+b*i
然后:

 -a-b*i
我们可以说:

  0 < b_1 < b_2 < ... < b_n

谢谢。

答案也非常相似:

negIm = imag(e) < 0;
[e1,ie1] = sort(e(~negIm));
[e2,ie2] = sort(e(negIm));
newe = cat(1,e1,e2);

v1 = v(:,~negIm); v2 = v(:,negIm);
newv = cat(2,v1(:,ie1),v2(:,ie2));

这是一个类似但扩展的问题: