声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1658|回复: 1

[编程技巧] 如何避免这个循环

[复制链接]
发表于 2013-1-6 23:13 | 显示全部楼层 |阅读模式

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

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

x
有两个数组A和B,比如
A=[3,8];
B=1:100;

目的是:对于A中的每个元素,找出B中比A(i)大于3并且小于6的元素。

这个当然可以用循环实现:
*****************************
clc
clear

A=[3,8];
B=1:100;
for i=1:1
    tmp=B-A(i);
    index=tmp>3&tmp<6;
    B(index)
end
*****************************
但是,当A和B数组很大的时候(比如都是100000的时候),循环耗费很多时间,应该有避免这个循环的算法?

谢谢

回复
分享到:

使用道具 举报

发表于 2013-1-8 09:16 | 显示全部楼层
可以用统计工具箱中的KDTreeSearcher函数:
  1. NS = KDTreeSearcher(B');
  2. C = NS.rangesearch(A'+4.5,1.5-eps);
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 02:55 , Processed in 0.234667 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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