2012-06-11 15 views
6

Mam pewną komórkę o rozmiarze 400x1. Zasadniczo składa się z liczb w postaci ciągu. To znaczy, kiedy robięKonwertuj komórkę na macierz w matlab

mycell{1} 

daje Wynik '1'

Więc widać numer 1 jest w postaci ciągu znaków. Jak mogę przekonwertować to na tablicę numeryczną?

Odpowiedz

5

Tak samo, jeśli size(mycell) to 400x1. . . . .

str2num(cell2mat(mycell)) 

... albo tak, jeśli rozmiar jest 1x400

str2num(cell2mat(mycell')) 

Jednak będzie to powodować problemy, jeśli którykolwiek z ciągów zawierać różną liczbę znaków, tj

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

Jeśli masz taki przypadek,

str2double(mycell) 

... wydaje się radzić sobie z tym ok, jak wspomniano w drugiej odpowiedzi!

7
str2double(mycell) 

Pod warunkiem, że masz szereg rzeczy, które sobowtórów:

>> 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    

Jeśli masz coś, co nie wygląda jak podwójne, dostaniesz NaN w tej komórki w rezultat:

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

c = 

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

>> str2double(c) 

ans = 

    1  2 
    3 NaN 
+0

+1 -> To jest bardziej ogólne niż oryginalne części mojej odpowiedzi :) – learnvst

3

Ponadto można spróbować cellfun(@str2num,mycell) Jeśli masz tablicę komórek podwaja:

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

można spróbować

mat = cellfun(@str2num,mycell)

Powiązane problemy