這是另一位幫助我的計算器參與者的解決方案。 數據從一個CSV文件來:Matlab:循環中的變量系列
States Damage Blizzards
Indiana 1 3
Alabama 2 3
Ohio 3 2
Alabama 4 2
%// Parse CSV file
[States, Damage, Blizzards] = textread(csvfilename, '%s %d %d', ...
'delimiter', ',', 'headerlines', 1);
%// Parse data and store in an array of structs
[U, ix, iu] = unique(States); %// Find unique state names
S = struct('state', U); %// Create a struct for each state
for k = 1:numel(U)
idx = (iu == k); %// Indices of rows matching current state
S(k).damage = Damage(idx); %// Add damage information
S(k).blizzards = Blizzards(idx); %// Add blizards information
end
在MATLAB中,我需要在一個循環中創造了一系列分配變量(A1,A2,A3)。所以我有三個領域的結構S:狀態,龍捲風,颶風。
現在,我已經嘗試這種方法來分配A1 =,A2 =,我得到了一個錯誤,因爲它不會對結構的工作:
for n = 1:numel(S)
eval(sprintf('A%d = [1:n]',S(n).states));
end
輸出目標是在循環的一系列分配變量結構的字段:
A1 = 2 3
A2 = 2 3
A3 = 4 5
我不確定這是否是'Matlab-way'的處理方式,如[解決] [這裏] – Schorsch 2013-05-09 19:53:15
@ user1608954爲什麼你需要一堆不同名稱的變量?爲什麼不在該結構中創建另一個字段,或者至少使用[單元格陣列](http://www.mathworks.com/help/matlab/cell-arrays.html)? – 2013-05-09 20:06:09
那麼,我正在生成一個不同的變量名稱,所以我可以繪製不同的變量。 Schorsch,這裏是一個結構:S = struct('Texas',0,'Kansas',1,'Maryland',2) – user1608954 2013-05-09 20:16:47