2014-11-17 2 views
2

inf-inf을 어떻게 분리 할 수 ​​있습니까?'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]; 

내가 그들을 분리하는 기능을 찾을 수 없습니다.

감사합니다.

답변

10

isinf()을 사용하면 inf을 감지 할 수 있으며 sign()을 사용하여 기호를 감지 할 수 있습니다. 다음 두 가지를 결합하십시오.

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

+1 - 매우 좋음! – rayryeng

관련 문제