Subtracting different matrices with NaN values

Hello everybody,
i have the following problem. There are 4 matrices (each containing 234x7690), i will call them A B C D. Then I have to calculate the result of A - B - C - D. All of the matrices have multiple Nan's. So if one of the 4 matrices has no value the result is NaN for this cell. But i need a result whenever A is a real number and at least one of the other has also a real value. So for example if (36 - Nan - 5 - NaN) the result should be 31. I hope you got my problem. Thanks for your answers.

 채택된 답변

Adam
Adam 2017년 3월 9일
편집: Adam 2017년 3월 9일

1 개 추천

Just replace NaNs with 0s
e.g.
B( isnan(B) ) = 0;

댓글 수: 2

Yes, i also thought about this idea. But one of the restriction is that it should give me only a result if at least one is not NaN. So when i replace all Nan's with 0, then it may happen that B, C and D were originally NaN and it gives me a result, although i don't want a value for such a case.
Well, you could do some indexing to find these situations if you stack your matrices as
myMatrices = cat( 3, B, C, D );
nanLocations = isnan( myMatrices );
allNaNs = sum( nanLocations, 3 ) == 3;
then use allNaNs as a mask to your result array to set any values where it is true to NaN in your result matrix.
I don't have time to give it as a complete solution, but you should get the idea.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2017년 3월 9일

댓글:

2017년 3월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by