필터 지우기
필터 지우기

NaN and Infs popping in my matrices after a few iterations of EM algorithm

조회 수: 6 (최근 30일)
Jérôme
Jérôme 2012년 11월 20일
Hello ;
So, I'm implementing the EM algorithm in Matlab, but my matrices quickly end up contaminated by NaN and Inf values. I think it might be caused by matrix inversions, but I'm not sure it's the only reason.
Here is the code : em_algo.m http://pastebin.com/vJGqQPw7 iterates until convergence (which never happens due to my issue) and calls smoother.m http://pastebin.com/yD9Je37i at each iteration. The NaNs and Infs start popping around the ~8th iteration, usually.
I guess in there somewhere I'm doing something unholy with my matrices, but I really have no clue about what's wrong. I trust your expertise.
Thanks in advance for the help!

답변 (3개)

José-Luis
José-Luis 2012년 11월 20일
It sounds like you are running into numerical stability issues. Look at the following example, that might help you understand what is happening:
val = 1;
while (val ~= Inf)
val = val / 10^-100
end
The NaN's that pop up can be a result of
0/0

Jérôme
Jérôme 2012년 11월 22일
Thanks José-Luis. Indeed, something like that might be the source of my problem. But I have a hard time finding out WHERE it happens in the code. :/
Another issue (or most likely another aspect of the same one) is the fact that some values seem to grow out of bonds which probably leads to Inf values. But again, I have no idea why this is happening.
  댓글 수: 2
José-Luis
José-Luis 2012년 11월 23일
편집: José-Luis 2012년 11월 23일
If your matrices are close to rank deficient, and you invert them, then numerical problems can pop up.

댓글을 달려면 로그인하십시오.


Matt J
Matt J 2012년 11월 23일
편집: Matt J 2012년 11월 23일
Set a conditional breakpoint at line 45 (making it conditional on i==8 or whenever the NaNs start to pop up). When the code stops there, see whether inv(A) has sensible values.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by