2017-11-02 16 views
2

Ich stehe mit einem vermeintlich einfachen Problem in MATLAB fest. Ich habe eine 1x43 Zellenanordnung, die wie folgt (vor jedem Wert beachten Sie das Leerzeichen) aussieht:Wie kann ich in MATLAB ein Zellenarray in ein numerisches Array konvertieren?

labels = {' 1', ' 2', ' 3', ... , ' 43'}; 

Und ich will es einfach in einen numerischen Vektor Dimensionen 1x43 konvertieren, die wie folgt aussehen:

labels_numeric = [1 2 3 ... 43]; 

Jeder könnte mir den richtigen Trick dafür angeben?

Antwort

1

gnovice Antwort ist die einfachste Lösung für dieses Problem spezifisches Problem, aber im Allgemeinen, wenn Sie ein Zellenarray in ein numerisches umwandeln möchten, indem Sie irgendeine Umwandlung auf jedes Element anwenden, können Sie so unter Verwendung cellfun tun. Zum Beispiel, wenn Sie fragen MATLAB für length({'apple' 'orange' 'banana'}) Sie 3 bekommen, aber wenn Sie die Länge der einzelnen Strings im Array möchten, können Sie tun:

>> cellfun(@length, {'apple' 'orange' 'banana'}) 

ans = 

    5  6  6 

Sie können eine anonyme Funktion verwenden, oder einen Handgriff zu einer Funktion dass Sie definiert haben, als das Argument cellfun, so kann die Transformation so komplex sein, wie Sie brauchen. Solange das Ergebnis Ihrer Funktion ein numerischer oder logischer Skalarwert ist, ist die Ausgabe von cellfun ein numerisches oder logisches Array. andernfalls wird es ein anderes Zellenfeld sein (und wenn es in der Größe variiert, müssen Sie das 'UniformOutput', false Argumentpaar verwenden)

Verwandte Themen