2016-09-29 45 views
0

我一堆數據結構的一個ID (id1, id2, id3, ... idN)包含變量(var1,var2,var3, ... varK),使得第一結構看起來像Matlab的:追加新的領域結構動態環路

id1.data.variable1 = [] 
id1.data.variable2 = [] 
. 
. 
. 

所有的ID共享一個數據字段相同的數據和可變結構。

現在,我非常希望在循環中爲這些現有結構附加一個新變量(newvar)。

對於一個結構,我只是這樣做:

id1.data.newvar1 = id1.data.var1^2 

這將與id1.data.var1^2添加newvar1id1.data的值。

,如果我嘗試

for i = 1:length(id_list) 
     id_list{i}.data.newvar = id_list{i}.data.var1^2 
end 

我得到一個「結構內容從非結構數組對象引用。」錯誤。

任何輸入表示讚賞。

+0

你引用'id_list {i}'就好像它是一個單元陣列。錯誤是因爲您嘗試引用該單元格數組的內容,就好像它是一個結構。 'id_list'究竟是什麼?如果'id_list'是所有字段名稱的列表,您可能想嘗試'(id_list {i})'。 – adjpayot

回答

2

您可以創建一個新的全局結構,其中包含您正在使用的一組結構。因此,新的結構將有以下字段:

ID.id1, ID.id2, ..., ID.idnumber_of_ids 

因此,爲了循環每個編號:

for i = 1:number_of_ids 
    name = ['id' num2str(i)]; 
    ID.(name).data.newvar = ID.(name).data.var1^2; 
end 

最後,保存結構沒有ID高層:

save('here.mat','-struct','ID');