changing the cell values into normal columns
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Mohamuud hassan
am 15 Mai 2015
Bearbeitet: Stephen23
am 15 Mai 2015
hello all, i have string data which contains 3groups in one cell how i can change into normal array i mean each character with one column. for instance
Data={'020';'1014';,000'};
how i can change those into each value in one column except 1014 which i want to store as 1 for one column and 0 for one column but 14 in one column as pair.
help me for solving this problem.
2 Kommentare
Akzeptierte Antwort
Stephen23
am 15 Mai 2015
Bearbeitet: Stephen23
am 15 Mai 2015
>> Data={'020';'1014';'000'};
>> cell2mat(cellfun(@(s)sscanf(s,'%1f%1f%f'),Data, 'UniformOutput',false))
ans =
0
2
0
1
0
14
0
0
0
Note the format string used in sscanf: the %1f token parses just one character, thus allowing the automatic parsing of the first two characters individually.
0 Kommentare
Weitere Antworten (2)
Guillaume
am 15 Mai 2015
One possible way would be to use a regular expression. Assuming that any overspill digit ends up in the third column:
Data={'020';'1014';'000'};
datasplit = regexp(Data, '(\d)(\d)(\d+)', 'tokens', 'once'); %split into three tokens, the first two just one digit.
datasplit = vertcat(datasplit{:}); %merge all rows into one cell array
newdata = cellfun(@str2double, datasplit) %and convert to numeric
0 Kommentare
Azzi Abdelmalek
am 15 Mai 2015
Data={'020';'1014';,'000'}
idx=~strcmp(Data,'1014')
ix=~idx
out=cell(numel(Data),3)
out(idx,1)=cellfun(@(x) x(1),Data(idx),'un',0)
out(idx,2)=cellfun(@(x) x(2),Data(idx),'un',0)
out(idx,3)=cellfun(@(x) x(3),Data(idx),'un',0)
out(ix,1)=cellfun(@(x) x(1),Data(ix),'un',0)
out(ix,2)=cellfun(@(x) x(2),Data(ix),'un',0)
out(ix,3)=cellfun(@(x) x(3:4),Data(ix),'un',0)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!