Object Indices in parfor loop
3 views (last 30 days)
Show older comments
Hello,
I am trying to parallelize some code involving cellular signaling models. I am using an object called "ppiUpdater," which is defined by a class I've written. I am trying to call a function using that object inside a parfor loop and matlab tells me that the object ppiUpdater is not properly indexed.
Here is the code for the parfor loop:
newState=zeros(NCells, 1);
parfor iCell = 1:NCells
newState(iCell,1).ActiveReceptors = ...
ppiUpdater.evolveReceptors(arguments involving iCell);
end
Thanks in advance for any help!
2 Comments
Satyajeet Sasmal
on 17 Aug 2015
Hi Ondrej,
Can you post your code and all relevant data that you use, here, so that I can reproduce the error?
Also, You might be incorrectly referencing your parfor loop. You can only reference the "i-th" element (not "(i+1)-th" or "(i-1)-th" elemnt) in "i-th" iteration of the loop. Please refer to the third paragraph of the link mentioned below for possible issue resolution.
Walter Roberson
on 21 Aug 2015
(i+1) and (i-1) are valid for indexing for loop variable i, but it must be consistent -- you cannot reference both (i) and (i-1) . See http://www.mathworks.com/help/distcomp/sliced-variables.html
Answers (1)
Edric Ellis
on 18 Aug 2015
If ppiUpdater is an object instance that you're trying to call a method of, you might want to use the "functional" form of method invocation, like so:
evolveReceptors(ppiUpdater, arguments involving iCell);
This entirely equivalent to the dot-reference version, except that parfor will not interpret it as an indexing expression.
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!