The variable in parfor cant classified
Info
This question is closed. Reopen it to edit or answer.
Show older comments
Hello.This is my code:
c_hat = zeros(n,1);
vc = zeros(m,n);
cv = zeros(m,n);
parfor j = 1:n
checks = find(H(:,j));
allIncoming = cv(checks,j);
sumAllIncoming = sum(allIncoming) + LLRs(j);
c_hat(j) = (1 - sign(sumAllIncoming))/2;
toCheck = sumAllIncoming - allIncoming;
vc(checks,j) = toCheck;
end
It is not runing because "The variable vc in a parfor cannot be classified." Without parfor it is running fine. Is it possible to run it with parfor?
Answers (1)
There are rules about sliced variables and how you can index them in parfor loops. However, you can get around these rules by re-organizing vc and cv as cell arrays,
c_hat = zeros(n,1);
vc = num2cell(zeros(m,n),1);
cv = vc;
parfor j = 1:n
checks = H(:,j)~=0;
allIncoming = cv{j}(checks);
sumAllIncoming = sum(allIncoming) + LLRs(j);
c_hat(j) = (1 - sign(sumAllIncoming))/2;
toCheck = sumAllIncoming - allIncoming;
vc{j}(checks) = toCheck;
end
vc=[vc{:}]; %convert back to normal array
7 Comments
Matt J
on 4 Jul 2013
Conversion to cell from double is not possible.
Perhaps you meant
cv{j}(vars)=2*atanh(toVar);
freebil
on 4 Jul 2013
Jan
on 4 Jul 2013
We cannot guess what your "line 19" is. So please explain this clearly.
@theodor,
Get rid of this
vc=[vc{:}];
and make sure you use vc and cv as a cell array everywhere, e.g.,
allIncoming = tanh( vc{j}(vars)/2 );
freebil
on 4 Jul 2013
I take it back. Put this back
vc=[vc{:}];
but add immediately after it
vc=num2cell(vc,2);
Also, please learn to use DBSTOP to trap and investigate common errors like "Index exceeds matrix dimensions." and "Conversion to cell from double is not possible."
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!