【问题标题】:IDL, splitting array data into blocksIDL,将数组数据拆分成块
【发布时间】:2016-01-26 13:26:14
【问题描述】:

这个网站是新手,所以首先感谢在这里做出贡献的每个人,这太棒了。

我也是 IDL 的新手,试图用它来分析一些数据。基本上,我有一组数据,我想用这些数据找出事件发生的可能性。对于其中的一部分,我想将 x 轴数据(时间)分成大小均匀的箱,然后在每个箱中寻找一个峰值。我知道如何在 IDL 中找到峰值,但还没有找到将我的数据分成大小相等的 bin 的方法。

对此的任何建议将不胜感激。谢谢!

【问题讨论】:

    标签: arrays idl-programming-language


    【解决方案1】:

    您可能想要使用 HISTOGRAM 功能。以下是文档中的详细示例:

    ; Read the ENSO (El Nino Southern Oscillation) time series
    ;  and set up a time vector.
    enso = READ_BINARY(FILE_WHICH('elnino.dat'), DATA_TYPE=4, ENDIAN='little')
    delta = 0.25 ; years
    time = FINDGEN(N_ELEMENTS(enso))*delta + 1871
    
    ; Calculate histogram of series using bins of given width.
    binsize = 0.1 ; in dimensionless units of ENSO index.
    h_enso = HISTOGRAM(enso, BINSIZE=binsize, LOCATIONS=binvals)
    
    ; Display times series and histogram.
    winsize = 500
    w = WINDOW(DIMENSIONS=[2*winsize, winsize])
    series = PLOT(time, enso, $
      /CURRENT, $
      POSITION=[0.10, 0.10, 0.65, 0.90], $
      XSTYLE=3, $
      XTITLE='Time (years)', $
      YTITLE='ENSO Index', $
      TITLE='El Ni!Sn!R!U~!No - Southern Oscillation (ENSO) Index (1871-1996)')
    
    ; Add a dotted line to indicate the zero value.
    zero1 = PLOT(series.xrange, [0,0], LINESTYLE='dotted', /OVERPLOT)
    
    ; Plot up the histogram using the STAIRSTEP property.
    histoplot = PLOT(h_enso, binvals, $
      /CURRENT, $
      POSITION=[0.70, 0.10, 0.95, 0.90], $
      /STAIRSTEP, $
      XTITLE='Frequency', $
      TITLE='Histogram of ENSO Index Values')
    
    ; Add a dotted line to indicate the zero value.
    zero2 = PLOT(histoplot.xrange, [0,0], LINESTYLE='dotted', /OVERPLOT)
    

    这是文档的链接: http://www.exelisvis.com/docs/HISTOGRAM.html

    另外,有关更多详细信息,请查看 JD Smith 在 David Fanning 页面上的帖子: http://www.idlcoyote.com/tips/histogram_tutorial.html

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 1970-01-01
      • 2012-01-23
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多