Convert cell to matrix with mixed data types

9 Ansichten (letzte 30 Tage)
Brian
Brian am 28 Feb. 2012
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

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 28 Feb. 2012
eg
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 Kommentar
Brian
Brian am 5 Mär. 2012
Simple, and does exactly what I need it do.
Thanks much,
Brian

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sean de Wolski
Sean de Wolski am 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');
end
C(idx) = {nan(1,3)};
C2 = cell2mat(C)

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by