2016-03-19 7 views
0

これはMatlabでは可能ですが、確かめたいとは思えません。Matlab:インデックスとして変数名を持つ構造体

として、私は構造を持っている:私は、元の名前を使用しています、だから、

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

OR

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

:私はのような構造のデータストアを作成したい

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

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

構造体変数をデータストアのインデックスとして使用します。

上記は実現可能ですか?

編集:

私は次のようにデータストアを使用することを目指して:

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

あなたは[MAの構造体の連結TLAB](http://de.mathworks.com/help/matlab/matlab_prog/concatenate-structures.html)? –

+2

なぜ単に 'Datastore.x.val1 = 5'などをしないのですか? – Suever

答えて

4

多分ダイナミックなフィールド名で、構造体を使用してください。

は、次のいずれかの場合val1

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

val2がアレイに置き換えるconcider、単にプレースホルダません:ダイナミックと

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

代替(結果は同じである)の名前を提出

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

注目すべき点は、文字列を使ってフィールドにアクセスできることです。 'disp(データストア。( 'x').val1)'または 'disp(データストア(f).val1)'です。それは暗黙のようですが、読んだり書いたりすることは明らかです。それでも、+1 – patrik

関連する問題