MATLAB: Using Groups of Rows in a Parfor Loop

MATLABparfor

Below is my code that is attempting to populate a variable using section of rows. The original ContractFile is hundreds of thousands of rows – the thinking is I can populate the variable on different workers using the parfor loop which will populate sections of 10,000 rows at a time on a different worker. Example: Rows 1:10,000 to one worker, rows 10,001:20,000 to a different worker, etc. This code works as a regular for loop, but breaks as a parfor loop and I can't figure out why. Thanks!
parfor i = 1:Contracts
Rows = (i-1)*10000+(1:10000);
Var1(Rows,:) = ContractFile(Rows,2) .* ContractFile(Rows,8);
end

Best Answer

As mentioned in my comment, your example does not make it clear why a loop is necessary at all. However, the reason for your difficulty is that your parfor code violates these rules. One way to fix it is as follows:
Var1=nan(10000,Contracts);
A=reshape(ContractFile(1:Contracts*10000,2),10000,[]);
B=reshape(ContractFile(1:Contracts*10000,8),10000,[]);
parfor i = 1:Contracts
Var1(:,i) = A(:,i).*B(:,i);
end
Var1=Var1(:);