Filter löschen
Filter löschen

Subtracting different matrices with NaN values

31 Ansichten (letzte 30 Tage)
Sascha  Winter
Sascha Winter am 9 Mär. 2017
Kommentiert: Adam am 9 Mär. 2017
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.

Akzeptierte Antwort

Adam
Adam am 9 Mär. 2017
Bearbeitet: Adam am 9 Mär. 2017
Just replace NaNs with 0s
e.g.
B( isnan(B) ) = 0;
  2 Kommentare
Sascha  Winter
Sascha Winter am 9 Mär. 2017
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.
Adam
Adam am 9 Mär. 2017
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by