Convert cell into double

Hi,
I have a matrix (1050*7) where I want to convert the cell format into a double:
It looks like that:
'0101' '2' '31.1.2013' '5' '5' '1' '23875' '0101' '2' '31.1.2013' '3' '3' '1' '5437' ...
Thanks already!

Respuestas (5)

Dishant Arora
Dishant Arora el 23 de Jun. de 2014
Editada: Dishant Arora el 23 de Jun. de 2014

1 voto

If your data follow this strict order and the 3rd column refers to date, try this:
function y = fun(x)
if isnan(str2double(x))
y = datenum(regexprep(x , '\.' , '-'))
else
y = str2double(x)
end
% consider testCell as your input cell, run this script
outputMatrix = cellfun(@(x)fun(x) , testCell , 'Un' , 1);
Julia
Julia el 23 de Jun. de 2014

0 votos

There is the command cell2mat (from the Matlab help):
Combine matrices in the four cells of cell array c into matrix m.
c = {[1], [2, 3, 4];
[5; 9], [6, 7, 8; 10, 11, 12]};
m = cell2mat(c)
m is a 3-by-4 matrix:
m =
1 2 3 4
5 6 7 8
9 10 11 12
Ben11
Ben11 el 23 de Jun. de 2014

0 votos

If all your entries are numbers you can use cell2mat. Is that the case?
julro
julro el 23 de Jun. de 2014

0 votos

Thanks for your response. I tried it but I am getting the error:
all input cell arrays must be same data type. Might be due to the '31.1.2013' in the 3. column...? So that relates to you question - no, not all are numbers.
Best,
Julia
Star Strider
Star Strider el 23 de Jun. de 2014

0 votos

It looks like a codes ( e.g. '0101' ) and dates ( e.g. '31.1.2013' ) so a simple conversion is probably not what you want. I would convert it to a table with the cell2table function if your version of MATLAB supports tables.

Categorías

Más información sobre Data Type Conversion en Centro de ayuda y File Exchange.

Preguntada:

el 23 de Jun. de 2014

Respondida:

el 23 de Jun. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by