parfor loop variable cannot be classified
2 次查看(过去 30 天)
显示 更早的评论
Hi all, I'm trying to use parfor instead of for to deal with 3 minimizations (for now, it should increase a lot) that are independent of each other in everything but the initial values. I have the data corresponding to each minimization in a different structure and the parameters over which I want to minimize, defined as scalars out of the structure. In particular, the code looks as follows (matlabpool is open before what follows).
p0=rand(3,1); % Initial guess for parameters, common to all %minimizations
for i=1:3,
mk(i).param=zeros(3,1);
mk(i).obj=zeros(1,1);
end
mk(1).mc=[2;3;4];
mk(2).mc=[1;3;2];
mk(3).mc=[2;4;1];
mk(1).n=6;
mk(2).n=8;
mk(3).n=15;
mk(1).id=1;
mk(2).id=2;
mk(3).id=3;
parfor i=1:3,
[mk(i).param mk(i).obj]=fminsearch(@(p) prFOCv1(p,a;mk(i).mc,mk(i).n,mk(i).id),P0,Options);
end
So, every struct has components labeled mc, n and id and the values of each of these correspond to the values specified above and are independent of each other. If I use for instead of parfor, it works ok, but executes one minimization after the other, while I would like to do all simultaneusly. When I use parfor I get the message ???Error: The variable mk in a parfor cannot be classified. See Parallel for Loops in MATLAB, "Overview". I have read the "Overview" section, but I just don't understand what's the mistake that I'm making.
Any help would be appreciated. Thanks,
Fernando
0 个评论
采纳的回答
更多回答(1 个)
Fernando
2012-5-5
4 个评论
Walter Roberson
2012-5-5
You could try outputting to cell arrays indexed at "i", and put the structure back together afterwards.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!