finden NaN-Werte die Zelle array
vermuten lässt habe ich Folgendes array:
a = {1; 'abc'; NaN}
Nun möchte ich herausfinden, in welchen Indizes diese enthält eine NaN, also kann ich die ersetzen Sie diese mit " (leerer string).
Wenn ich cellfun
mit isnan
bekomme ich eine nutzlose Ausgabe
cellfun(@isnan, a, 'UniformOutput', false)
ans =
[ 0]
[1x3 logical]
[ 1]
So, wie würde ich dies korrigieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Tat, wie du selbst gefunden, diese kann getan werden, indem
Aufteilung:
zurück logische Skalare, unabhängig davon, ob
x
ist ein Skalar oder Vektor.Mit dieser Funktion innerhalb
cellfun
wird dann erradicate die Notwendigkeit für'UniformOutput', false
:Diese können verwendet werden als Indizes auf das original-array:
was wiederum ermöglicht die Zuordnung zu diesen Indizes:
Beachten Sie, dass die Zuweisung muss getan werden, um eine Zell-array selbst. Wenn Sie das nicht verstehen, Lesen, auf die Unterschiede zwischen
a(inds)
unda{inds}
.x
ist eine matrix, müssen Sie ändern, um die anonyme Funktion zu@(x) any(any(isnan(x)))
(d.h. hinzufügenany
zum zweiten mal, um sicherzustellen, dass Sie eine Skalare aus der Funktion)).any(isnan(x(:))
, die funktioniert für arrays von beliebiger dimension und fordertany
nur einmal.Fand ich die Antwort auf http://www.mathworks.com/matlabcentral/answers/42273
Allerdings weiß ich nicht understant es...
a(ind) = []
wird, entfernen Sie die Einträge aus dem arraya(ind)= {''}
ersetzen dieNaN
mit einem leeren string.Wenn Sie möchten, löschen Sie den Eintrag
= []
statt= {''}
.Wenn Sie wollten, ersetzen Sie die
NaN
s mit einem anderen Wert, wird einfach gleich dem Wert der Verwendung geschweifter Klammern: