2016-05-24 3 views
0

Ich habe ein struct-Array aus einer Tab-Datei importiert, mit 100+ name \ double rows. Die erste Zeile hat einen Zeichenwert (Name \ char). Ich versuche, es als eine Matrix zu laden und es in Zellen zu konvertieren, die obere Reihe vollständig entfernend.Convert Struktur in Zelle oder Matrix?

Aber wenn ich cell2mat(array) verwenden, hat sie den Fehler:

All contents of the input cell array must be of the same data type.

Ich weiß, das von dem Namen ist vs. Doppelsäulen. Aber gibt es eine Möglichkeit, dies in eine Matrix umzuwandeln? Oder, wenn die Daten Zeilen von

name | 1000x1 double 

sind, ist es besser, nur dies als ein Zell-Array zu verlassen?

+0

Wenn ich Ihre Beschreibung richtig verstehe, enthalten Ihre Daten eine Reihe von Namen und der Rest ist numerisch? Warum nicht das Import-Tool verwenden (in MATLAB im aktuellen Ordner-Viewer (Seitenleiste oder Tab) rechtsklicken Sie die Datendatei und "Daten importieren ...". Dort können Sie die erste Zeile einfach ausschließen und den Rest der Daten importieren entweder als benannte Spaltenvektoren (Namen basierend auf einer beliebigen Zeile, zB die erste), eine Matrix oder welchen Datentyp auch immer .. Wenn Sie auf die Schaltfläche Daten importieren klicken, können Sie auch ein Skript oder eine Funktion erzeugen, die genau diesen Prozess wiederholt für Sie, die sehr nützlich sein kann für mehr Dateien. – Erik

Antwort

0

Es ist nicht möglich, eine Matrix zu erstellen, die sowohl Strings als auch numerische Werte enthält. Wenn Sie so etwas wollen, ist Zell-Array Ihre einzige Option. Es ist jedoch sehr einschränkend, wenn Sie die numerischen Werte mit Matrix/Vektor-Operationen oder Funktionen, die Matrizen/Vektoren als Eingabe erwarten, verarbeiten wollen. Eine Option wäre, die Strings und numerischen Daten getrennt zu speichern. behalte die Strings in einem Zellenfeld S und die numerischen Daten in einer Matrix M. Behalte dann die Elemente im Auge. Zum Beispiel könnten S{i} und Zeile M(i, :) beide dem Eintrag i aus Ihrer ursprünglichen Tabelle entsprechen. Eine andere Möglichkeit wäre, mit struct() eine eigene Datenstruktur zu erstellen, die sowohl Strings als auch numerische Werte enthalten kann.

+0

Vielen Dank! Das hilft eine Tonne besonders in dem Wissen, wie es zu analysieren ist. Ich habe versucht, Zelle2Mat (Array) auf einem Array nur der zweiten Spalte (mit 1000x1 verdoppelt; Entfernen der Namen in der ersten Spalte. Dies verkettete jedoch alle Werte zu nx 1. Wie kann ich die Zeilen im Zellenfeld verketten, um eine Matrix zu erstellen: [Zeile 1 Wert] [Zeile 2 Wert] etc.? – Dee

+0

Ich tat M = [array (2: 125] * Bereich war, um die erste Zeile * zu entfernen, die in der Befehlszeile zu funktionieren schien und den Text von [1000x1 double] -Elementen in einer Spalte zeigte. ABER wenn ich mir die Variable anschaue, sagt sie, dass es eine Zelltypvariable ist. – Dee

Verwandte Themen