首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Matlab中存储由循环生成的匿名函数?

如何在Matlab中存储由循环生成的匿名函数?
EN

Stack Overflow用户
提问于 2014-11-27 09:24:29
回答 1查看 125关注 0票数 0

我希望将由Matlab循环生成的每个匿名函数存储在结构(而不是cell)中,然后在另一个分离的循环中访问和评估每个存储的匿名函数。我用单元格法报告了一个非常简单的例子。我不知道在这种情况下使用结构最有效的方法是什么。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-27 10:53:44

您需要按其名称访问结构的字段,您需要首先生成一个字段名列表。因为你只有10个字段,我建议

代码语言:javascript
运行
复制
fields = char(double('a'):double('a')+BS)'

它生成一个包含字母a到k的数组。

代码语言:javascript
运行
复制
bsdensdraws = struct();

并将句柄写入

代码语言:javascript
运行
复制
bsdensdraws.(fields(w)) = ...

你也可以用同样的方式访问它。如果您需要更多的迭代,那么您可能需要一种更复杂的方法来生成字段名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27167050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档