如何对最小值数组中的重要数据进行排序?

时间:2013-11-25 14:34:13

标签: matlab

我有一个局部最小值的向量,这些值中的大多数都是噪声,只有很少的重要值。假设我的向量具有三个有效值并且都低于零。重要值和噪音之间存在巨大差异。每个重要值的大小也不同。我想根据它们的指数按升序对这些重要值进行排序。例如

y = [-0.0002, -0.00058, -0.28, -0.0008, -0.25,-0.0006,-0.00004,-0.26]
output = [-0.28, -0.25, -0.26, -0.0002, -0.00058,-0.0008, -0.0006,-0.00004]

不知何故,我想保持订单达到峰值指数。

1 个答案:

答案 0 :(得分:1)

所以对你来说,y中的顺序比1/99的差异更重要(你可以将1/99调整到你喜欢的任何东西)。

[~,order]=sort(y+(1:length(y))/99)
output=y(order)

我在排序之前将矢量[1 / 99,2 / 99,3 / 99,4 / 99 ...]添加到y。然后我只保留修改后的y将被排序的方式。我将其应用于未经修改的y。

如果y非常长,则无效。为此,您可能想再次重复我的建议:

[~,order]=sort(y+(1:length(y))/99)
y=y(order)
[~,order]=sort(y+(1:length(y))/99)
output=y(order)