我想指定有價值的,這是編號和由循環給出的結構字段的名稱。例如,我想做如下,Matlab;結構字段名稱與有價值(=數字)
A.bx,其中A是結構名稱(= char),b是字段名稱(= char)的一部分,x對於for循環有價值。 A和b是固定的或預定義的。
任何意見是讚賞!
我想指定有價值的,這是編號和由循環給出的結構字段的名稱。例如,我想做如下,Matlab;結構字段名稱與有價值(=數字)
A.bx,其中A是結構名稱(= char),b是字段名稱(= char)的一部分,x對於for循環有價值。 A和b是固定的或預定義的。
任何意見是讚賞!
genvarname(str,list)
生成str
[字符串],其中在str
每次迭代值是從所述排除列表
而且fieldname(S)
在已經返回字段的所有的名字的列表不同的有效的變量名結構S
(使用它來創建一個排除列表)
這是你想要的東西代碼:
A = struct();
for i = 1:5
A.(genvarname ('b', fieldnames (A))) = i;
end
閱讀
2. fieldnames(S)
非常感謝您的及時迴應。這正是我需要的,你的建議完美運作。再次感謝您的幫助 – user2990048
這並沒有改變這個事實,即以這種方式命名變量是非常糟糕的做法。您應該使用單元陣列或普通數組 - 無論適用。比「b1」到「b1234」要好得多。 – sebastian
@sebastian是的,這也是我建議他的。 – adil
你可以用你的名字領域的結構簡單sprintf
A = struct()
for ii = 1:10
fn = sprintf('b%d', ii);
A.(fn) = ii; % use the struct
end
我傾向於sebastian使用數組或細胞在這種類型的字段,暗示同意命名。除了單元格和數組之外,您可能會發現containers.Map
非常通用且有用。
那麼爲什麼不能使用數組或單元呢? – adil