2012-06-11 2 views
6

Ich habe eine bestimmte Zelle der Größe 400x1. Es besteht im Wesentlichen aus Zahlen in Form von Strings. Ich meine, wenn ichKonvertieren von Zellen in Arrays in Matlab

mycell{1} 

tun es Ergebnis '1'

gibt So können Sie die Nummer 1 ist in Form von String zu sehen. Wie kann ich dies in ein numerisches Array konvertieren?

Antwort

5

So, wenn size(mycell) 400x1 ist. . . . .

str2num(cell2mat(mycell)) 

... oder wie diese, wenn die Größe ist 1x400

str2num(cell2mat(mycell')) 

Dies ist jedoch zu Problemen führen, wenn eine der Saiten eine unterschiedliche Anzahl von Zeichen enthalten, dh

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

Wenn Sie einen solchen Fall haben,

str2double(mycell) 

... scheint das zu handhaben, wie in der anderen Antwort erwähnt!

7
str2double(mycell) 

Vorausgesetzt, dass Sie eine Reihe von Dingen, die wie Doppel aussehen:

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

Wenn Sie etwas, das nicht wie ein Doppel sieht, werden Sie eine NaN in dieser Zelle erhalten in das Ergebnis:

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

c = 

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

>> str2double(c) 

ans = 

    1  2 
    3 NaN 
+0

+1 versuchen -> Dies ist allgemeiner als das Originalteil meiner Antwort :) – learnvst

3

Sie können auch cellfun(@str2num,mycell) versuchen Wenn Sie eine Zelle Array von Doppel haben:

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

können Sie

mat = cellfun(@str2num,mycell)