在matlab数组中将​​-inf替换为min,+ inf替换为max值

0 arrays matlab

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

obc*_*don 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)));
Run Code Online (Sandbox Code Playgroud)