2016-08-09 28 views
1

Warum gibt x={1:4} eine 1x1 Zelle zurück und x={1 2 3 4} geben Sie eine 1x4 Zelle zurück?Warum gibt x = {1: 4} eine 1x1-Zelle zurück und x = {1 2 3 4} gibt eine 1x4-Zelle zurück? [MATLAB]

Ich möchte eine 1xn Zelle mit x={1:n} Anweisung erhalten. Der Grund dafür ist, dass ich eine Struktur

struct('field1', [], 'field2', x, 'field3', ' message') 

, so dass die Struktur ist

enter image description here

Das Problem ist, konstruieren müssen, wenn ich x={1:4} verwenden, wird die Struktur

enter image description here

Aber ich möchte die Struktur wie das erste Bild aussehen. Ich muss die x={1:n} Aussage verwenden, wie n kann sehr groß sein.

Kann jemand eine Lösung vorschlagen? Vielen Dank im Voraus.

Antwort

1

Da 1:4 den numerischen Vektor [1 2 3 4] angibt, entspricht die Zuweisung x = {1:4} der x = {[1 2 3 4]}. So ist x ein 1 × 1-Zellen-Array, das einen 1 × 4-Vektor enthält.

Auf der anderen Seite erstellt x = {1 2 3 4} ein 1 × 4-Zellen-Array von Zahlen.

Um so etwas wie x = {1 2 3 4} mit unterschiedlicher Größe n zu erstellen, können Sie zunächst den numerischen Vektor 1:n erstellen und dann anwenden num2cell, das jede Zahl in einer separaten Zelle setzt:

x = num2cell(1:n); 
+0

'{[1 2 3 4} 'sollte' {[1 2 3 4]} '' sein. Zu klein, um eine Bearbeitung mit mindestens 6 Zeichen zu sein. ;) –

+0

@MatthiasW Danke! Korrigiert –