Update each element of multi dimensional array

1 view (last 30 days)
Hello!
i am working with multi dimensional arrays, and I need to check every combination of values and update them. For this pusrpose, I am using for loops but they are super slow. I have waited hours but it was still processing. Is there any faster way?
My code for 3D array is like this
for i = 1:nrows
for j = 1:ncols
for k = 1:ndepths
AI = function(a(i), b(j), c(k));
cspace (i,j,k) = JKM(AI);
end
end
end
  18 Comments
Guillaume
Guillaume on 18 Apr 2019
The error message tells you the out of memory occurs in the parfor. So, it all depends on that GJK function for which you haven't shown the code.
What's the output of memory before you execute the parfor loop? By far, the biggest variable is your fv which uses ~4.5 GB of memory.
Walter Roberson
Walter Roberson on 18 Apr 2019
I just noticed that your fv is a struct with fields face and vertices. That suggests that you are creating four patch objects for each of your 296487 struct array elements, and that those form parameters to whatever GJK does. That is a lot of graphics objects, over 72 million verticles for the fv alone, and unknown numbers of graphics elements triggered by the obstacle patches.
Note that graphics objects created on parallel workers cannot change the display: parallel workers are different processes that work independently without connection to the graphics display thread.

Sign in to comment.

Answers (0)

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!