; docformat = 'rst'

;+
; Produce a spectrogram of the given time series.
;
; :Categories:
;    graphics computation
;-

;+
; Produce a spectrogram.
;
; :Returns:
;    2-dimensional fltarr
; 
; :Params:
;    s : in, required, type=fltarr
;       input time series
;    windowSize : in, required, type=long
;       size of the window
;-
function vis_spectrogram, s, windowSize
  compile_opt strictarr

  result = fltarr(n_elements(s) - windowSize + 1L, windowSize)
  
  for w = 0L, n_elements(s) - windowSize do begin
    result[w, *] = abs(fft(s[w:w + windowSize - 1L])) ^ 2
  endfor
  
  return, result   
end


; main-level example program

openr, lun, file_which('damp_sn2.dat'), /get_lun
damp1 = bytarr(512)
readu, lun, damp1
free_lun, lun

device, get_decomposed=dec
device, decomposed=0
vis_loadct, 39

ws = 5
vis_image, alog10(congrid(vis_spectrogram(damp1, ws), 512 - ws + 1, 100)), /new_window

device, decomposed=dec

end