How do I convert a cell array with string, double, and NaN values to a double array

I have a cell with these values = {1, 2, 'None', 1, 2, 3, 5, NaN, 'None'}
I want to convert this into a double with these values = {1, 2, NaN, 1, 2, 3, 5, NaN, NaN}
Is this possible?

 Accepted Answer

My original solution was obviously flawed, so credits to Guillaume for cleaning up redundant functions
A(strcmp(A, 'None')) = {NaN};
cell2mat(A)
... and credits to Stephen Cobeldick for providing the general solution (for any string):
A(~cellfun(@isnumeric,A)) = {NaN}

3 Comments

Note that the find is completely redundant
A(strcmp(A, 'None')) = {NaN};
is simpler and faster.
No need to use find, logical indexing works perfectly.
An alternative that replaces all non-numeric values:
A(~cellfun(@isnumeric,A)) = {NaN}
Thanks guys! I put your solutions in the answer box for future reference, as the answer had already been accepted.

Sign in to comment.

More Answers (0)

Products

Release

R2018a

Asked:

on 5 Sep 2018

Edited:

on 5 Sep 2018

Community Treasure Hunt

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

Start Hunting!