具有多个无限值+inf
和-inf
的数组。如何将-inf
替换为该数组中存在的最小值,并将+inf
替换为同一数组的最大值。数组是某些计算的输出,因此我们最初不知道。但是,只是一个示例将数组作为A=[inf, 1, 2, inf, 0, -4, -inf, -1, -inf]
。这里min和max清楚地给出为-4和2,我可以使用循环轻松替换它。如何为某些计算的结果数组执行此操作。我将感谢您的宝贵建议。
答案 0 :(得分:7)
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)));