2017-09-25 3 views
1

Supposons que j'ai une matrice A =MATLAB: Comment puis-je annuler (valeur "NaN") les éléments d'une matrice basés sur les valeurs "NaN" d'une autre matrice?

1  2  3; 
4  5  6; 
7  8  9 

et une matrice B =

1  NaN 3; 
NaN 5  6; 
7  NaN NaN 

Je veux annuler les mêmes éléments qui sont annulés dans la matrice B. Il serait:

A2 =

1  NaN  3; 
NaN  5  6; 
7  NaN  NaN 

Comment puis-je faire cela?

+4

Vous pouvez utiliser l'indexation logique: 'A2 = A; A2 (isnan (B)) = NaN; ' – Hoki

+4

@ Hoki: Réponses dans la section des réponses s'il vous plaît. – Bathsheba

Répondre

3

Vous pouvez créer la nouvelle matrice A2 de sorte que chaque élément soit a2 = b - b + a.

Cela dépend du fait que NaN se propage à travers l'évaluation d'expression, et b - b est essentiellement une no-op dans tous les autres cas.

Il est également garanti de ne jamais déborder de votre type.

+0

_a no-op dans toutes les autres instances_ sauf si 'b = inf' –