声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1303|回复: 4

[编程技巧] 如何提高循环迭代速度?

[复制链接]
发表于 2008-10-7 04:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
有一个二维数组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;
        [C,I]=sort(temp(:));
        D(i,j)=B(I(1));
    end
end
这个程序非常非常耗费时间,我的机器大概3个小时。

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

使用道具 举报

发表于 2008-10-7 09:15 | 显示全部楼层
sort 改成min试试
 楼主| 发表于 2008-10-7 20:26 | 显示全部楼层
改成了,还是很慢的
大概得20分钟把

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

谢谢ls的
发表于 2008-10-13 11:37 | 显示全部楼层

回复 楼主 re-us 的帖子

楼主解决的吗?
若方便的话, 建议可否说明一下你的原始议题
个人看法, 有时从源头思考, 或许会有意想不到的结果
发表于 2008-10-13 12:00 | 显示全部楼层
对数组进行排序后,然后设计一种合适的搜索算法,效率应该能够有很大的提升
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 20:46 , Processed in 0.055937 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表