MATLAB: How to modify this code to use parfor s=1:r

forfor looploopsparallel computingParallel Computing Toolboxparfor

Hi, I have reported here a very simple piece of code but it basically faces the same issues of my actual estimation code. Could you help me in modifying it to use parfor s=1:r? Thanks a lot!
r=20;
n=2;
m=3;
D=unidrnd(20,8,2);
upp=zeros(size(D,1),r,n);
for j=1:n
A=unidrnd(10,m,n);
parfor s=1:r
B=unidrnd(10,m,n);
C=A+B;
for i=1:size(C,1)
for w=1:size(D,1)
if all(C(i,:)==D(w,:))
upp(w,s,j)=1;
end
end
end
end
end

Best Answer

  • You could try something like this
    r=20;
    n=2;
    m=3;
    D=unidrnd(20,8,2);
    upp=zeros(size(D,1),r,n);
    for j=1:n
    A=unidrnd(10,m,n);
    parfor s=1:r
    B=unidrnd(10,m,n);
    C=A+B;
    % Make a temporary vector to build up in the FOR loops below
    tmp = zeros(1, size(D,1));
    for i=1:size(C,1)
    for w=1:size(D,1)
    if all(C(i,:)==D(w,:))
    % Assign an element of 'tmp'
    tmp(w) = 1;
    end
    end
    end
    % Assign all of 'tmp' into 'upp'.
    upp(:, s, j) = tmp;
    end
    end