2016-03-19 6 views
0

Ich bin mir nicht sicher, dass dies in Matlab möglich ist, wollte aber sicherstellen.Matlab: Strukturen mit variablem Namen als Index

Ich habe Strukturen wie:

x = struct(); 
x.val1 = 5; 
x.val2 = 7; 

y = struct(); 
y.val1 = 15; 
y.val2 = 17; 

ich eine Struktur Datastore erstellen möchten, wie:

DataStore = struct; 
DataStore(x).val1 = 5 
DataStore(x).val2 = 7 
DataStore(y).val1 = 15 
DataStore(y).val2 = 17 

ODER

DataStore = struct; 
DataStore('x').val1 = 5 
DataStore('x').val2 = 7 
DataStore('y').val1 = 15 
DataStore('y').val2 = 17 

Also, ich den Namen des ursprünglichen bin mit Strukturvariablen als Index für DataStore.

Ist das oben genannte machbar?

Edit:

Ich ziele darauf ab Datastor zu verwenden, wie folgend:

disp(DataStore('x').val1) 
disp(DataStore('y').val2) 
+0

Suchen Sie nach der [Verkettung von Strukturen in MA TLAB] (http://de.mathworks.com/help/matlab/matlab_prog/concatenate-structures.html)? –

+2

Warum nicht einfach 'Datastore.x.val1 = 5' usw.? – Suever

Antwort

4

Verwenden Sie eine Struktur, vielleicht mit dynamischen Feldnamen.

Entweder:

DataStore.x.val1=6 
DataStore.x.val2=9 

Alternative mit dynamischem eingereicht Namen (Ergebnis ist das gleiche):

f='x' 
DataStore.(f).val1=6 
DataStore.(f).val2=9 

Bei val1 und val2 sind nicht nur Platzhalter, concider sie mit einem Array ersetzt:

DataStore.(f).val(1)=6 
DataStore.(f).val(2)=9 
+0

Bemerkenswert ist, dass Felder auch über Strings angesprochen werden können. 'disp (DataStore. ('x'). val1)' oder 'disp (DataStore (f) .val1)'. Es ist irgendwie impliziert, aber es könnte sich lohnen, mit Lesen und Schreiben explizit zu sein. Immer noch +1 – patrik

Verwandte Themen