これは、私を助けてくれた別のスタックオーバーフロー参加者からの解決策です。データはcsvファイルから来ています:
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) をループで作成する必要があります。したがって、状態、竜巻、ハリケーンの 3 つのフィールドを持つ構造 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