【发布时间】:2014-01-23 19:24:08
【问题描述】:
我有一个大矩阵(大约 1GB),其中每一行代表我在表面采样的点的 (x,y) 坐标及其 z 高度。
如何获得距离 (x,y) 坐标小于某个欧几里得距离的所有点?
目前我正在做这件可怕的事情:
% mtx_pointList is a large matrix with each row containing a sample: [x y z].
% We want to get all the samples whose (x,y) point is less than dDistance
% away from the vector: v_center = [x y].
mtx_regionSamples = zeros(0,3);
for k=1:length(mtx_pointList(:,1))
if( norm( mtx_pointList(k,[1 2])-v_center ) < dDistance^2 )
mtx_regionSamples = [ mtx_regionSamples mtx_pointList(k,:) ]
end
end
...但在我的应用程序中,这个循环必须运行大约 25 万次。
如何让它更快地做同样的事情?
【问题讨论】:
标签: performance matlab if-statement for-loop matrix