【问题标题】:How to sort the significant data in array of minimas?如何对最小值数组中的重要数据进行排序?
【发布时间】:2013-11-25 14:34:13
【问题描述】:

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

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]

不知何故,我想保留峰值索引的顺序。

【问题讨论】:

    标签: matlab


    【解决方案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)
    

    【讨论】:

    • 请解释一下。我无法理解 y+(1:length(y))/99 的用途。
    • 数组中有 3000 个元素,您建议的方法不起作用。
    • 即使是长版?你也可以试试 [~,order]=sort(round(y*100)/100+(1:length(y))*1e-7)
    猜你喜欢
    • 2017-08-01
    • 1970-01-01
    • 2020-01-22
    • 2016-07-13
    • 2021-04-18
    • 2021-11-30
    • 1970-01-01
    • 2016-11-18
    • 2016-07-13
    相关资源
    最近更新 更多