首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby跳过数组索引中的聚类算法

ruby跳过数组索引中的聚类算法
EN

Stack Overflow用户
提问于 2014-03-05 22:07:37
回答 1查看 126关注 0票数 1

我用ruby编写了一个聚类算法,但是我不知道为什么聚类前的元素大小是67,聚类后元素的大小是66。某个地方从数组中跳过索引。

代码语言:javascript
复制
MarkerCluster.new(reports, distance, zoom).clusterize

class MarkerCluster

  ...        
  def initialize(markers, distance, zoom)
    @markers, @distance, @zoom = markers, distance, zoom
    @map_markers = []
  end

  ...
  def clusterize 
    puts "The size of markers before clustering #{@markers.size}" # prints 67
    marker_count = 0
    cluster.each do |item|
      if item.is_a?(Array)
        marker_count += item.size
        map_markers << create_map_marker(item)
      else
        marker_count += 1
        map_markers << item
      end
    end
    puts "The size of markers after clustering: #{marker_count}" # prints 66
    to_map 
  end
...
# return collection where coordinates closer than distance are clustered together.
  def cluster
    cluster_list = []

   i = j = 0
   i = markers.size - 1
   while(i > 0)
     cluster = []     
     j = i - 1

     while(j > 0)
       pixels = pixel_distance(markers[i].latitude, markers[i].longitude, 
                                markers[j].latitude, markers[j].longitude)
       if distance > pixels
         cluster << markers[j]
         j -= 1
       else                  
         break
       end          
     end

     if cluster.size > 0
       cluster << markers[i]
       cluster_list << cluster
       i = j + 1
     else
       # no cluster, so just add single marker
       cluster_list << markers[i]
     end
     i -= 1
   end

   cluster_list
  end

正如您所看到的,我只是遍历一个数组并比较索引,以确定它们是属于集群还是作为一个单元。但是,我不知道集群方法在哪里跳过索引。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-05 22:14:51

可能这一行应该改为while (i >=0)。因为在初始化i = markers.size -1的值时,以及在对I>0进行检查时,不考虑索引i=0。

如果有帮助请告诉我

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22210421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档