2017-03-20 6 views
0

Ich habe einen Matlab-Arbeitsbereich, der nur Strukturen enthält. Alle Strukturen haben die gleichen Felder. Stellen Sie sich vor mir mit Namen im Arbeitsbereich drei Strukturen:Kombinieren Sie mehrere Strukturen in einem

B00002N6AA B00002N6VF B00004OKOP 

Ich kann sie in eine einzige Struktur kombinieren, indem Sie:

combined = [B00002N6AA B00002N6VF B00004OKOP]; 

Jetzt habe ich Tausende von Strukturen. Ich weiß, ich kann alle ihre Namen erhalten, indem Sie:

SNames = who; 

Gibt es trotzdem von sie alle in einer einzigen Struktur kombiniert, ohne manuell kopieren und ihre Namen einfügen?

Antwort

3

Sie können alle Ihre Daten in einer Datei speichern und dann diese Datei in eine struct laden und dann struct2array verwenden, um es in ein Array von Strukturen zu konvertieren.

filename = [tempname, '.mat']; 

% Save all variables starting with B0000 
save(filename, 'B0000*') 

% load the data back into a struct 
tmp = load(filename, '-mat'); 

% Convert this struct into an array of structs 
result = struct2array(tmp); 

% Delete the temporary file 
delete(filename) 

In Zukunft sollten dynamische Variablennamen, die Daten codieren, möglichst nicht verwendet werden. Speichern Sie stattdessen die Daten stattdessen in der Datenstruktur selbst.

Verwandte Themen