re-us 发表于 2008-10-7 04:33

如何提高循环迭代速度?

有一个二维数组A,是坐标值,维数是27*2890。
有另外一个二维数组B,仍然是坐标值,大小是1001*4500.


我想知道A中的每个点与B中的距离最小的那个B点的值。比如:A(1,1)可能与B(100,200)距离最小,我要得到B点的值。

我是通过下面的方法判断:
for i=1:27
    for j=1:2890
      temp=(B-A(i,j)).^2;
      =sort(temp(:));
      D(i,j)=B(I(1));
    end
end
这个程序非常非常耗费时间,我的机器大概3个小时。

高手帮看看怎么提高速度?我感觉主要是B数组太大了。
谢谢

rocwoods 发表于 2008-10-7 09:15

sort 改成min试试

re-us 发表于 2008-10-7 20:26

改成了,还是很慢的
大概得20分钟把

对了写错了,如果不改是30分钟

谢谢ls的

ChaChing 发表于 2008-10-13 11:37

回复 楼主 re-us 的帖子

楼主解决的吗?
若方便的话, 建议可否说明一下你的原始议题
个人看法, 有时从源头思考, 或许会有意想不到的结果

happy 发表于 2008-10-13 12:00

对数组进行排序后,然后设计一种合适的搜索算法,效率应该能够有很大的提升
页: [1]
查看完整版本: 如何提高循环迭代速度?