parfor loop variable cannot be classified
조회 수: 1 (최근 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!