2012-06-11 13 views
6

Tengo una determinada celda de tamaño 400x1. Básicamente se compone de números en forma de cadena. Me refiero a cuando lo hagaConvertir celda en matriz en matlab

mycell{1} 

da resultado '1'

Así se puede ver el número 1 está en la forma de cadena. ¿Cómo puedo convertir esto en una matriz numérica?

Respuesta

5

Me gusta esto si el size(mycell) es 400x1. . . . .

str2num(cell2mat(mycell)) 

... o así si el tamaño es 1x400

str2num(cell2mat(mycell')) 

Sin embargo, esto causará problemas si alguno de sus cadenas contienen un número diferente de caracteres, es decir

mycell{1} = '2' 
mycell{2} = '33' 

Si tiene un caso como este,

str2double(mycell) 

... parece manejar esto bien como se menciona en la otra respuesta!

7
str2double(mycell) 

Siempre que tenga una serie de cosas que se parecen a los dobles:

>> c = {'1' '2' ; '3' '4'} 

c = 

    '1' '2' 
    '3' '4' 

>> str2double(c) 

ans = 

    1  2 
    3  4 

>> whos ans 
    Name  Size   Bytes Class  Attributes 

    ans  2x2    32 double    

Si usted tiene algo que no se ve como un doble, podrás obtener una NaN en esa celda en el resultado:

>> c{2,2} = 'aei' 

c = 

    '1' '2' 
    '3' 'aei' 

>> str2double(c) 

ans = 

    1  2 
    3 NaN 
+0

+1 -> Esto es más general que la parte original de mi respuesta :) – learnvst

3

también puede probar cellfun(@str2num,mycell) Si usted tiene una serie de células de dobles:

mycell = {'1.56548524'; '1.5265'; '-4.2616' ;'-0.2154' ;'2.15'};

puede probar

mat = cellfun(@str2num,mycell)