Viewing contents of file '../idllib/idl_5.2/lib/hanning.pro'
; $Id: hanning.pro,v 1.5.6.1 1999/01/16 16:40:33 scottm Exp $
;
; Copyright (c) 1987-1999, Research Systems, Inc.  All rights reserved.
;	Unauthorized reproduction prohibited.
;
function Hanning, N1, N2, Alpha=alpha ;1D or 2D Hanning/Hamming window function
;+
; NAME:
;	HANNING
;
; PURPOSE:
;	Window function for Fourier Transform filtering.  May be used
;		for both the Hanning and Hamming windows.
;
; CATEGORY:
;	Signal, image processing.
;
; CALLING SEQUENCE:
;	Result = HANNING(N1) ;For 1 dimension.
;
;	Result = HANNING(N1, N2) ;For 2 dimensions.
;
; INPUTS:
;	N1:	The number of columns of the result.
;
;	N2:	The number of rows of the result.
;
; Keyword Parameters:
;	Alpha = width parameter of generalized Hamming window.  Alpha
;		must be in the range of 0.5 to 1.0.  If Alpha = 0.5,
;		the default, the function is called the "Hanning" window.
;		If Alpha = 0.54, the result is called the "Hamming" window.
;
; OUTPUTS:
;	Result(i) = 1/2 [1 - COS(2 PI i / (N-1)]
;
;	For two dimensions, the result is the same except that "i" is replaced
;	with "i*j", where i and j are the row and column subscripts.
;
; COMMON BLOCKS:
;	None.
;
; SIDE EFFECTS:
;	None.
;
; RESTRICTIONS:
;	None.
;
; PROCEDURE:
;	Straightforward.
;
; MODIFICATION HISTORY:
;	DMS, May, 1987.
;	DMS, Jan, 1994. Added generalized width parameter.
;-

on_error,2                              ;Return to caller if an error occurs
if N_elements(alpha) le 0 then alpha = 0.5
a = 2 * !pi / (N1 -1)           ;scale factor
if n_params() lt 2 then n2 = 1  ;1D filter?

If n2 eq 1 then begin		;1d?
    return, (alpha-1.) * cos(findgen(N1)*a) + alpha
endif else begin                ;2d case
    b = 2 * !pi / (n2-1)        ;dim 2 scale fact
    row = (alpha-1.) * cos(findgen(n1)*a) + alpha ;One row
    col = (alpha-1.) * cos(findgen(n2)*b) + alpha ;One column
    RETURN,(row # col)
endelse
end