日安MATLAB利弊,MATLAB:在結構中存儲的值
我有我的工作區(單值)的變量必須被存儲到執行的每一個循環數組的一個長長的清單。
這裏有一個簡單的例子: 變量在工作區:
a = 1;
b = 2.2;
c = 3.4;
d = [0.5 0.7 1 1.2 1.5];
e = [-15 -10 -5 0 5 10 15 20];
serial = {'WTZ00151'};
model = {'336F'};
NameList = {'a';'serial';'model'};
1)在這裏,我只保存單個值的變量爲Data
結構,但是我想要做的是什麼,每循環,將單個值保存到Data
結構中的數組中。
varList = who;
Data = struct;
fields = fieldnames(Data, '-full');
fieldSizes = structfun(@(field) length(field),Data);
% removing arrays from structure
for lst = 1:length(fieldSizes)
if fieldSizes(lst) > 1
Data = rmfield(Data,fields(lst));
end
end
Data =
Data: [1x1 struct]
a: 1
b: 2.2000
c: 3.4000
index: 10
model: {'336F'}
serial: {'WTZ00151'}
所以,如果我在一個循環中運行它,for i = 1:5
,Data
應該是這樣的:
Data =
Data: [1x1 struct]
a: [1 1 1 1 1]
b: [1x5 double]
c: [1x5 double]
index: [10 10 10 10 10]
model: {1x5 cell}
serial: {1x5 cell}
如何編寫代碼for
循環任何想法?
2)由於工作空間中有太多變量&我有一長串需要存儲的變量,而不是使用who
將所有變量保存到結構中(然後濾除不需要的),我怎麼能使用變量名稱列表(從文本文件導入:NameList
)來調出需要存儲的內容?使用NameList中的變量名稱不會調用結構值。
非常感謝,
優秀的迴應。非常感謝您的幫助。 – Bensa