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?

 採用された回答

jonas
jonas 2018 年 9 月 5 日
編集済み: jonas 2018 年 9 月 5 日
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 件のコメント

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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2018a

質問済み:

2018 年 9 月 5 日

編集済み:

2018 年 9 月 5 日

Community Treasure Hunt

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

Start Hunting!

Translated by