区分'inf'和'-inf'

Ras*_*hid 2 arrays matlab matrix nan infinite

我怎么能分开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);
Run Code Online (Sandbox Code Playgroud)

这是,

c = [  1     2     3   NaN     3   Inf;
    -Inf     1     0     1     0     1];
Run Code Online (Sandbox Code Playgroud)

我想要,

newc = [   1   2   3   NaN   3   1e6;
        -1e6   1   0     1   0     1];
Run Code Online (Sandbox Code Playgroud)

我找不到一个分隔它们的函数.

谢谢.

MrA*_*man 10

你可以检测inf使用isinf(),你可以使用检测标志sign().结合这两个:

newc = c;
inf_filter = isinf(newc);
newc(inf_filter) = 1e6 * sign(newc(inf_filter));
Run Code Online (Sandbox Code Playgroud)