2016-03-19 14 views
0

Matlab'da bunun mümkün olduğundan emin değilim ama emin olmak istedim.Matlab: indeks olarak değişken adı olan yapılar

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

VEYA

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

, ben orijinal adını kullanıyorum: Ben gibi bir yapı veri deposuna oluşturmak istiyorum

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

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

: olarak

Ben yapılara sahip DataStore için dizin olarak yapı değişkenleri.

Yukarıdaki uygulanabilir mi?

Düzenleme:

ben şöyle veri deposuna kullanılmasını hedefleyen:

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

MA'daki yapıların birleşimini mi arıyorsunuz? TLAB] (http://de.mathworks.com/help/matlab/matlab_prog/concatenate-structures.html)? –

+2

Neden sadece Datastore.x.val1 = 5' gibi şeyler yapmıyorsunuz? – Suever

cevap

4

Kullanım belki dinamik alan adları ile bir yapı.

Ya: durumunda val1 yılında

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

ve val2 bir dizi ile bunların yerine Consider, yer tutucular değildir:: dinamik özellikleri ile

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

Alternatif (sonuç aynıdır) isimleri açtı

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

Notlara dikkat etmek gerekirse, alanlara dizeleri kullanarak da erişilebilir. disp (DataStore. ('x'). val1) 'veya' disp (DataStore (f) .val1) '. Bu bir tür ima, ama okuma ve yazma ile açık olmaya değer olabilir. Hala, +1 – patrik