Converting cells to strings

Actually I have a 1x1 struct that I am extracting data from.
But the data is a mixture of numbers and strings.
I want to convert all of the data into strings so that I could store it in a separate cell array.
'char' doesn't do a good conversion, because it truncates everything to 255.

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 14 Apr. 2011

0 Stimmen

variant
dc = struct2cell(data);
t1 = cell2mat(cellfun(@(x)[ischar(x) isnumeric(x)],dc,'UniformOutput', false));
celstr = dc(t1(:,1));
num = dc(t1(:,2));
% if there is a field with a cell with characters and numbers
t2 = ~any(t1,2);
dcc = cell(cellfun(@(x)x(:)',dc(t2),'UniformOutput', false));
dcc2 = [dcc{:}];
t3 = cell2mat(cellfun(@(x)[ischar(x) isnumeric(x)],dcc2,'UniformOutput', false)')';
celstr = [celstr;dcc2(t3(1,:))'];
num = [num;dcc2(t3(2,:))'];

Weitere Antworten (3)

Jan
Jan am 15 Apr. 2011

1 Stimme

Are the numbers scalars or arrays? Which format do you want as output?
C = struct2cell(DataStruct);
numIndex = find(not(cellfun('isclass', C, 'char')));
for i = reshape(numIndex, 1, [])
C{i} = numstr(C{i});
end
Walter Roberson
Walter Roberson am 15 Apr. 2011

0 Stimmen

Which MATLAB version are you using? char() has accepted up to 65535 since approximately MATLAB 6.2.

1 Kommentar

Jan
Jan am 15 Apr. 2011
Even MATLAB 5.3 had 16 bit CHARs already.

Melden Sie sich an, um zu kommentieren.

John Brathwaite
John Brathwaite am 18 Apr. 2011

0 Stimmen

This is interesting the issue with char. I am using matlab 7.8.0
But I was able to get in done with "struct2cell".
Thanks for your help!

Kategorien

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

Community Treasure Hunt

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

Start Hunting!

Translated by