如何将inf-inf彼此分开?

我有一个包含inf-inf的矩阵,我想分别用1e6-1e6替换它们。

例如,

a = [1 2 3 0 3 4]./[1 1 1 0 1 0];
b = log2([0 2 1 2 1 2]);
c = cat(1,a,b);

就是
c = [  1     2     3   NaN     3   Inf;
    -Inf     1     0     1     0     1];

我想要,
newc = [   1   2   3   NaN   3   1e6;
        -1e6   1   0     1   0     1];

我找不到将它们分开的功能。

谢谢。

最佳答案

您可以使用inf来检测isinf(),并且可以使用sign()来检测符号。结合两个:

newc = c;
inf_filter = isinf(newc);
newc(inf_filter) = 1e6 * sign(newc(inf_filter));

10-08 18:10