Info

此问题已关闭。 请重新打开它进行编辑或回答。

The variable in parfor cant classified

2 次查看(过去 30 天)
freebil
freebil 2013-7-4
关闭: MATLAB Answer Bot 2021-8-20
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?

回答(1 个)

Matt J
Matt J 2013-7-4
编辑:Matt J 2013-7-4
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 个评论
freebil
freebil 2013-7-4
Really thanks for the answers. @Jan Simon line 35 was
vc{j}(checks) = toCheck;
and line 19 was
parfor j = 1:n
@Matt J I changed them but now i have the error
Index exceeds matrix dimensions.
Error in decodeBP (line 52)
allIncoming = tanh(vc{j}(vars)/2);
Matt J
Matt J 2013-7-4
编辑:Matt J 2013-7-4
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."

此问题已关闭。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by