I have a 54x8 cell array that contains only strings. Most of these strings represent numbers and I would like to detect which cells are NaN.
One possibility would simply be to replace all NaN with ' ' or to check whether each d{i,j} == NaN.
Thanks

 Réponse acceptée

Walter Roberson
Walter Roberson le 26 Mai 2015

2 votes

cellfun(@(C) any(isnan(C(:)), YourCell)
However in your situation you could probably go with
cellfun(@isnumeric, C)
Oh wait, when you say NaN, do you mean the string 'NaN' ? If so then
cellfun(@(C) strcmp(C, 'NaN'), C)

6 commentaires

SG
SG le 26 Mai 2015
Yes, I meant the string 'NaN'. However, I am not sure what that statement is doing. Is it returning anything?
Walter Roberson
Walter Roberson le 26 Mai 2015
Ah right, should be cellfun(@(C) strcmp(C,'NaN'), d) for testing cell array d.
SG
SG le 26 Mai 2015
yes, but that gives a matrix with 0s and 1s at corresponding indexes. Is there a simpler way to check a given d{i,j}? E.g.
for i=1:54
for j=1:8
if (d{i,j} == 'NaN')
%statement
end
end
end
G H
G H le 8 Juil 2017
Not work for me. (2016b)
Answer: Matrix dimensions must agree.
Walter Roberson
Walter Roberson le 8 Juil 2017
G H are you comparing numeric nan or string 'NaN'
beginner94
beginner94 le 18 Déc 2018
Modifié(e) : beginner94 le 18 Déc 2018
Hello,
@WalterRoberson:
Is there a way to use this
cellfun(@(ds) strcmp(ds, 'NaN'), ds))
when the cell elements are not aligned but below each other?
Thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by