Memory problem when accessing and copying the 3D array elements by subscripts

1 view (last 30 days)
I am trying to access/copy values from an image 3D array to another 3D array using the subcripts (rows and columns). I am trying to avoid the for loop. With for loop this works fine. The size of the rows and columns is 121020 x 1. But I am getting a memory error as below:
Requested 121020x121020x3 (40.9GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a
long time and cause MATLAB to become unresponsive.
The code snippet is below
% Find boundary of the cylindrical projection
[row,col] = find(ximg > 0 & ximg <= xdim & yimg > 0 & yimg <= ydim);
out(row,col,:) = image(row,col,:);
Any help to make it without for loop is appreciated!

Sign in to comment.

Accepted Answer

Matt J
Matt J on 2 Aug 2021
Edited: Matt J on 2 Aug 2021
The better way would be to avoid using find():
region=(ximg > 0 & ximg <= xdim & yimg > 0 & yimg <= ydim);
out(:)=outtmp(:); clear outtmp imtmp

More Answers (0)




Community Treasure Hunt

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

Start Hunting!

Translated by