2017-03-14 80 views
1

对它们进行排序我有一个复杂的条目的向量x,我要做到以下几点:查找具有相同幅度的条目和虚部在Matlab

假设存在具有相同的绝对值项,例如135+12i5-12i。如果我把它们放在内建函数sort中,它将首先放入13,然后5-12i然后5+12i。然而,由于所有这些都具有相同的幅度,我想按他们的想象部分对它们进行排序,所以我想先有5-12i,然后13,然后5+12i。不使用循环或if语句,最简单的方法是什么?

回答

4

您可以构造一个矩阵,其大小为第一列,虚部为第二列,然后使用sortrows对结果进行排序,结果将首先按第一列(幅度)排序,然后再按第二列列(虚部)。您可以使用the second outputsortrows来获得排序行的相应索引,然后您可以使用这些索引对原始数据进行排序。

data = [13, 5+12i, 5-12i]; 

[~, inds] = sortrows([abs(data(:)), imag(data(:))]); 
sorted = data(inds); 
% 5.0000 - 12.000i 13.0000 + 0.0000i 5.0000 +12.0000i 
相关问题