Convert cell to matrix with mixed data types

6 views (last 30 days)
I am trying to accomplish something relatively simple (most likely) but am struggling. I have a large cell array that I'd like to convert to a matrix. My cell array contains mostly numbers but a few '#N/A' where my source data was blank. I'd like to convert this cell array to a matrix and have those N/A's be converted to NaN. How can I go about doing this?
Thanks, Brian

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 28 Feb 2012
A = {[3] [4] [ 4] '#N/A'
[2] [1] '#N/A' [ 3]
[4] [2] [ 5] [ 3]
[1] [4] [ 4] [ 2]}
A(cellfun(@ischar,A)) = {NaN}
out = cell2mat(A);
A - cell array - column
i1 = cellfun(@ischar,A)
sz = cellfun('size',A(~i1),2)
A(i1) = {nan(1,sz(1))}
C = cell2mat(A)
  1 Comment
Brian on 5 Mar 2012
Simple, and does exactly what I need it do.
Thanks much,

Sign in to comment.

More Answers (1)

Sean de Wolski
Sean de Wolski on 28 Feb 2012
Do the sizes all line up?
You could first run your cell through a for-loop that identifies, '#N/A's and then replaces them. E.g:
C = {magic(3);1:3;'#N/A';pi*ones(1,3);'#N/A'};
for ii = numel(C):-1:1
idx(ii) = isequal(C{ii},'#N/A');
C(idx) = {nan(1,3)};
C2 = cell2mat(C)

Community Treasure Hunt

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

Start Hunting!

Translated by