converting cell of strings in arry or cell of numbers
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Syed Zohaib Ali
am 28 Dez. 2011
Kommentiert: Oli Fairfax
am 1 Apr. 2021
I have a cell of strings 'tsince' having dimension 143 by 1 as '4632' '0.00000000' '-1440.00000000' '-1438.00000000' '-1436.00000000' '-1434.00000000' '-1432.00000000' '-1430.00000000' '-1428.00000000' . . . . '1436.00000000' '1438.00000000' '1440.00000000'
I want to convert it to an array or cell of numbers. I tried with str2num() but it gives the following error:
>> tsince2=str2num(tsince) ??? Error using ==> str2num at 33 Requires string or character array input.
I am new to matlab. somebody can please help out how to do this. Thanks in advance
Zohaib
0 Kommentare
Akzeptierte Antwort
Jan
am 28 Dez. 2011
A surprisingly efficient method even for very large input:
C = {'4632', '0.00000000', '-1440.00000000', '-1438.00000000', ...
'-1436.00000000', '-1434.00000000', '-1432.00000000' '-1430.00000000', ...
'-1428.00000000', '1436.00000000', '1438.00000000', '1440.00000000'};
S = sprintf('%s ', C{:});
D = sscanf(S, '%f');
5 Kommentare
Oli Fairfax
am 1 Apr. 2021
I had to make my cell array a single column then ensure empties were converted to NaN (otherwise they got lost) but this worked MUCH quicker than str2double for my example, thanks Jan!
C2 = reshape(C,[],1);
C2(cellfun(@isempty,C2)) = {'NaN'};
S = sprintf('%s ', C2{:});
D = sscanf(S, '%f');
Data = reshape(D, [], size(C,2));
Weitere Antworten (3)
Nirmal Gunaseelan
am 28 Dez. 2011
STR2NUM requires a single string to work on. You need to loop around the individual cell elements and use STR2NUM. CELLFUN is a better way of doing the same - check out the doc.
0 Kommentare
Dao Austin
am 17 Apr. 2015
you may convert cell to char, then use str2num:
%given A;
C=char(A);
D=str2num(C);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Type Conversion 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!