How to work around memory errors?
2 次查看(过去 30 天)
显示 更早的评论
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 ~6000x3 and the other ~850,000x3. 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!
0 个评论
采纳的回答
James Tursa
2015-3-4
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?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!