MATLAB: How to work around memory errors

errormemorysurface

Hi,
I am trying to create an object represented by a matrix of coordinate points. This object will be a subset of a larger surface, say blue. What I have is two matrices of coordinate points for two surfaces, blue and red, one inside the other (red is inside blue), and I am trying to create a third surface that is points of blue within a radius of points of the boundary points of red. The code I have so far is:
idx = true(1,size(blue,2));
for pointb=blue
pb = repmat(pointb,1,length(boundred));
idx = idx & sum((pb-boundred).^2)<r^2;
end
A = blue(idx);
where A is the matrix of coordinate points from blue.
This gives me the error:
Error using repmat
Out of memory. Type HELP MEMORY for your options.
which I don't know how to get around. My matrices are very large matrices, one ~6000×3 and the other ~850,000×3. Is there a way to smooth the matrices without losing too much information? Or another method to deal with large data and memory restrictions? Thanks in advance for any help!

Best Answer

I guess the obvious suggestion is don't use repmat, but rewrite the sum((pb-boundred).^2) calculation as a loop instead. What are the dimensions of blue and boundred?