2013-11-15 43 views
2

我想指定有價值的,這是編號和由循環給出的結構字段的名稱。例如,我想做如下,Matlab;結構字段名稱與有價值(=數字)

A.bx,其中A是結構名稱(= char),b是字段名稱(= char)的一部分,x對於for循環有價值。 A和b是固定的或預定義的。

任何意見是讚賞!

+0

那麼爲什麼不能使用數組或單元呢? – adil

回答

3

genvarname(str,list)生成str [字符串],其中在str每次迭代值是從所述排除列表

而且fieldname(S)在已經返回字段的所有的名字的列表不同的有效的變量名結構S(使用它來創建一個排除列表)

這是你想要的東西代碼:

A = struct(); 
for i = 1:5 
    A.(genvarname ('b', fieldnames (A))) = i; 
end 


閱讀
2. fieldnames(S)

+0

非常感謝您的及時迴應。這正是我需要的,你的建議完美運作。再次感謝您的幫助 – user2990048

+2

這並沒有改變這個事實,即以這種方式命名變量是非常糟糕的做法。您應該使用單元陣列或普通數組 - 無論適用。比「b1」到「b1234」要好得多。 – sebastian

+0

@sebastian是的,這也是我建議他的。 – adil

1

你可以用你的名字領域的結構簡單sprintf

A = struct() 
for ii = 1:10 
    fn = sprintf('b%d', ii); 
    A.(fn) = ii; % use the struct 
end 

我傾向於sebastian使用數組或細胞在這種類型的字段,暗示同意命名。除了單元格和數組之外,您可能會發現containers.Map非常通用且有用。

相關問題