我希望将由Matlab循环生成的每个匿名函数存储在结构(而不是cell)中,然后在另一个分离的循环中访问和评估每个存储的匿名函数。我用单元格法报告了一个非常简单的例子。我不知道在这种情况下使用结构最有效的方法是什么。
gammatrue = 2;
deltatrue = -3;
T = 4;
n = 3;
BS = 10;
r = 5;
bsdensdraws = cell(1, BS);
bsdensdrawsev = zeros(T*n*r, BS);
for w = 1:BS
data = randn(T*n, n-1);
mutrue = gammatrue/deltatrue*data;
sigmatrue = repmat(1/(deltatrue^2)*eye(n-1), [1 1 T*n]);
draws = mvnrnd(repmat(mutrue, [r 1]), repmat(sigmatrue, [1 1 r])); %matrix (r*T*n)x(n-1))
bsdensdraws{w} = @(z) mvnpdf(draws,repmat(z(1)/z(2)*data, [r 1]), ...
repmat(repmat(1/(z(2)^2)*eye(n-1), [1 1 T*n]), [1 1 r]));
end
param = [2 3; 4 5; 6 7];
for w = 1:BS
for y = 1:size(param,1)
gamma = param(y,1);
delta = param(y,2);
bsdensdrawsev(:,w) = bsdensdraws{w}([gamma delta]); %vector (T*n*r)x1
end
end
发布于 2014-11-27 10:53:44
您需要按其名称访问结构的字段,您需要首先生成一个字段名列表。因为你只有10个字段,我建议
fields = char(double('a'):double('a')+BS)'
它生成一个包含字母a到k的数组。
bsdensdraws = struct();
并将句柄写入
bsdensdraws.(fields(w)) = ...
你也可以用同样的方式访问它。如果您需要更多的迭代,那么您可能需要一种更复杂的方法来生成字段名。
https://stackoverflow.com/questions/27167050
复制相似问题