网站的新手,所以首先感谢在这里贡献的每个人,这很棒。
我也是IDL的新手,试图用它来分析一些数据。基本上,我有一组数据,我想找到一个事件的可能性。对于其中的一部分,我想将x轴数据(时间)分成均匀大小的分档,然后在每个分档中查找峰值。我理解如何在IDL中找到峰值,但还没有找到将数据拆分成相同大小的箱子的方法。
对此有任何建议将不胜感激。谢谢!
答案 0 :(得分: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
希望这有帮助!