在matlab数组

时间:2017-01-27 10:45:00

标签: arrays matlab

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

1 个答案:

答案 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)));