【问题标题】:Replace -inf by min and +inf by max value in matlab array用matlab数组中的最小值和+inf替换-inf
【发布时间】:2017-01-27 10:45:00
【问题描述】:

具有多个无限值的数组,如+inf-inf。如何将-inf 替换为该数组中存在的最小值,并将+inf 替换为同一数组的最大值。该数组是一些计算的输出,因此我们最初不知道它。但是,仅举一个例子,将数组作为A=[inf, 1, 2, inf, 0, -4, -inf, -1, -inf]。这里 min 和 max 明确给出为 -4 和 2,我可以使用循环轻松替换它。如何为某些计算的结果数组执行此操作。非常感谢您的宝贵建议。

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    Matlab 具有称为逻辑索引的强大功能。这意味着您可以使用相同长度的布尔数组来索引您的数组。

    A=[inf, 1, 2, inf, 0, -4, -inf, -1, -inf]
    
    %Replace the values where A==-inf with the minimum real number.
    A(A==-inf) = min(A(isfinite(A)));
    %Replace the values where A==+inf with the maximum real number.
    A(A==inf)  = max(A(isfinite(A)));
    

    【讨论】:

    • ...甚至是不同的长度:-)(见this answer,编辑3)
    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 2016-10-26
    • 2021-06-29
    • 2014-01-29
    • 2015-08-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多