2016-11-18 3 views
1

Sagen wir, ich habe eine Struktur namens Daten und ich möchte drei Substrukte namens Bereich, Einwohner und Industrie erstellen. Diese Namen werden in einem Keller gespeichert. Meine Methode sieht wie folgt aus:Erstellen Sie mehrere Substrukte in Schleife und Indizierung mit cellarray

names={'area','inhabitants','industrie'}; 
for i=1:length(names) 
data.(names(i)) = struct; 
end 

Ich bekomme diese Fehlermeldung: „Argument, um dynamische Struktur Verweis auf einen gültigen Feldnamen auswerten müssen“

tun es jedoch funktioniert wie folgt:

somestr = 'area'; 
data.(somestr) = struct; 

Deshalb habe ich versucht:

names={'area','inhabitants','industrie'}; 
for i=1:length(names) 
    somestr = names(i); 
    data.(somestr) = struct; 
end 

Aber ich den gleichen Fehler wie zuvor. Ich möchte es so machen, weil ich viele Daten importieren muss und in Matlab speichern möchte. Wenn jemand später den Code ändern möchte, kann es viel einfacher sein, den Keller zu ändern.

Antwort

4

Bis das spezifische Element der Zelle accessed via curly braces ist, wird das Element eins nach dem anderen sein cell und nicht ein char. Sie brauchen nur geschweifte Klammern:

names={'area','inhabitants','industrie'}; 
for i=1:length(names) 
    data.(names{i}) = struct; 
end 
+0

Vielen Dank! – Mitch

Verwandte Themen