trouver des valeurs NaN est une cellule de tableau
permet de supposer que j'ai le tableau suivant:
a = {1; 'abc'; NaN}
Maintenant, je veux savoir dans lequel les indices de ce contient NaN, afin que je puisse les remplacer par " (chaîne vide).
Si j'utilise cellfun
avec isnan
- je obtenir une inutile de sortie
cellfun(@isnan, a, 'UniformOutput', false)
ans =
[ 0]
[1x3 logical]
[ 1]
Alors, comment ferais-je ça?
OriginalL'auteur Matthias Pospiech | 2012-08-10
Vous devez vous connecter pour publier un commentaire.
En effet, comme vous l'avez constaté vous-même, ce qui peut être fait par
Ventilation:
sera de retour d'une logique scalaire, indépendamment de savoir si
x
est un scalaire ou un vecteur.L'utilisation de cette fonction à l'intérieur de
cellfun
sera alors erradicate la nécessité pour'UniformOutput', false
:Ceux-ci peuvent être utilisés comme indices du tableau d'origine:
qui à son tour permet l'affectation de ces indices:
Noter que la cession doit être fait à une cellule de tableau lui-même. Si vous ne comprenez pas cela, de lire sur les différences entre
a(inds)
eta{inds}
.x
est une matrice, vous devez modifier la fonction anonyme pour@(x) any(any(isnan(x)))
(c'est à dire ajouterany
pour la deuxième fois, pour vous assurer d'obtenir un scalaire à partir de la fonction)).vous avez raison. En fait, de manière plus générale, il serait préférable de le faire
any(isnan(x(:))
, qui travaille pour des tableaux de n'importe quelle dimension et les appelsany
qu'une seule fois.OriginalL'auteur Rody Oldenhuis
J'ai trouvé la réponse sur http://www.mathworks.com/matlabcentral/answers/42273
Cependant, je ne pas comprendre...
OriginalL'auteur Matthias Pospiech
a(ind) = []
va supprimer les entrées de la matricea(ind)= {''}
remplacera leNaN
avec une chaîne vide.Si vous souhaitez supprimer l'entrée de l'utilisation
= []
au lieu de= {''}
.Si vous voulait remplacer le
NaN
s avec une valeur différente tout simplement égale à la valeur à l'aide des accolades:OriginalL'auteur