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

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 26 Mai 2015

2 Stimmen

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 Kommentare

SG
SG am 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 am 26 Mai 2015
Ah right, should be cellfun(@(C) strcmp(C,'NaN'), d) for testing cell array d.
SG
SG am 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 am 8 Jul. 2017
Not work for me. (2016b)
Answer: Matrix dimensions must agree.
Walter Roberson
Walter Roberson am 8 Jul. 2017
G H are you comparing numeric nan or string 'NaN'
beginner94
beginner94 am 18 Dez. 2018
Bearbeitet: beginner94 am 18 Dez. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Gefragt:

SG
am 26 Mai 2015

Bearbeitet:

am 18 Dez. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by