2017-03-14 29 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 
相關問題