查找具有相同幅度的条目,并按Matlab中的虚部对它们进行排序

时间:2017-03-14 20:19:57

标签: matlab

我有一个带有复杂条目的向量x,我想要执行以下操作:

我们假设有一些具有相同绝对值的条目,例如135+12i5-12i。如果我将它们放入内置sort函数中,则会先放置13,然后放置5-12i,然后放置5+12i。但是,由于所有这些都具有相同的幅度,我想按它们的虚部对它们进行排序,所以我希望5-12i先来,然后是13然后是5+12i。在不使用任何循环或if语句的情况下,最简单的方法是什么?

1 个答案:

答案 0 :(得分:4)

您可以构造一个矩阵,其大小为第一列,虚构组件为第二列,然后使用sortrows对结果进行排序,该结果首先按第一列(大小)排序,然后通过第二列(虚构组件)。您可以使用markdown_code_blocks.highlight(markdown_s) sortrows来获取已排序行的相应索引,然后您可以使用这些索引对原始数据进行排序。

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