サブ関数を含まなければならない関数f1があるので、別のスクリプトを使用できません。
function vars = f1()
a = 1;
b = 'hello';
c = {[1 2 3]};
currvars = whos; %all variable info
for k = 1:size(currvars, 1)
eval(['vars.(currvars(k).name) = ' currvars(k).name ';']);
end
end
スクリプトで関数を呼び出し、genvarname()とeval()を使用してスクリプトで変数を作成します。
vars = f1();
varnames = genvarname(fieldnames(vars));
for k = 1:size(varnames(:),1) %Creates vars with the struct's fieldnames.
eval([varnames{k} ' = vars.' varnames{k} ';']);
end
clearvars vars varnames
変数作成プロセスを関数に適合させ、それを呼び出すスクリプトにのみすべての変数を読み取りたいのですが、出力に100の異なる変数名を割り当てたくありません。誰かがこれを行う方法について何かアドバイスがありますか?