Borrar filtros
Borrar filtros

converting cell of strings in arry or cell of numbers

11 visualizaciones (últimos 30 días)
Syed Zohaib Ali
Syed Zohaib Ali el 28 de Dic. de 2011
Comentada: Oli Fairfax el 1 de Abr. de 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

Respuesta aceptada

Jan
Jan el 28 de Dic. de 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 comentarios
Josh Philipson
Josh Philipson el 30 de Mzo. de 2021
clever. Thanks Jan!
Oli Fairfax
Oli Fairfax el 1 de Abr. de 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));

Iniciar sesión para comentar.

Más respuestas (3)

Nirmal Gunaseelan
Nirmal Gunaseelan el 28 de Dic. de 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.

Matt Tearle
Matt Tearle el 28 de Dic. de 2011
Try str2double(tsince)

Dao Austin
Dao Austin el 17 de Abr. de 2015
you may convert cell to char, then use str2num:
%given A;
C=char(A);
D=str2num(C);

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by