IDL返回众数(数组中出现次数最多的值)

   对于整型数组,可以直接利用histogram函数可以实现,示例如下:

   IDL>array = [1, 1, 2 , 4, 1, 3, 3, 2, 4, 5, 3, 2, 2, 1, 2, 6, -3]

   IDL>distfreq = Histogram(array, MIN=Min(array))

   IDL>mode = Where(distfreq EQ maxfreq) + Min(array)

   IDL> Print, mode

    2

   但是对于浮点型数据,上面的方法就失效了,我暂时想到一个比较笨的办法,实例如下:

function mode, array
  b = array[uniq(array, sort(array))]
  array_count=fltarr(n_elements(b))  
  for ii=0, n_elements(b)-1 do begin
    index=where(abs(array-b(ii)) le 1.e-10,count)
    array_count(ii)=count   
  endfor
  mode=b(where(array_count eq max(array_count)))
  return,mode
end

 pro test1

  array = [1, 2.1, 1, 2.1, 3, 4, 5, 6, 6, 5]
  print,mode(array)

 end

扫描二维码关注公众号,回复: 3391878 查看本文章

参考网址:

http://www.idlcoyote.com/code_tips/mode.html

https://www.harrisgeospatial.com/docs/HISTOGRAM.html

   

猜你喜欢

转载自www.cnblogs.com/zhanggl12138/p/9717641.html