2016-11-18 10 views
1

私はdataという構造体を持っていますが、area、inhabitantsおよびindustryという3つのサブストラクチャを作成したいとします。これらの名前は、セル配列に保存されます。 私の方法は次のようになります。ループ内に複数のサブストラクトを作成し、cellarrayを使用してインデックスを作成します

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

私はこのエラーを取得する:「ダイナミックな構造の参照の引数は、有効なフィールド名に評価されなければなりません」私が試した理由

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

がそれです::この作品のように

は、しかし、それをやって

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

しかし、私は前と同じエラーを取得します。 多くのデータをインポートしてMatlabに保存しなければならないので、そのようにしたいと思います。後で誰かがコードを変更したいのであれば、セル配列を変更するほうがはるかに簡単です。

答えて

4

セルの特定の要素がaccessed via curly bracesになるまで、その要素は1つずつcellであり、charではありません。だからちょうど中括弧が必要です:

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

ありがとうございました! – Mitch

関連する問題