⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avg.pro

📁 basic median filter simulation
💻 PRO
字号:
FUNCTION AVG,ARRAY,DIMENSION, NAN = NAN, DOUBLE = DOUBLE;+; NAME:;       AVG; PURPOSE:;       Return the average value of an array, or 1 dimension of an array; EXPLANATION:;       Calculate the average value of an array (in which case AVG is identical;       to the RSI procedure mean.pro), or calculate the average;       value over one dimension of an array as a function of all the other;       dimensions.;; CALLING SEQUENCE:;       RESULT = AVG( ARRAY, [ DIMENSION, /NAN, /DOUBLE ] );; INPUTS:;       ARRAY = Input array.  May be any type except string.;; OPTIONAL INPUT PARAMETERS:;       DIMENSION = Optional dimension to do average over, integer scalar;; OPTIONAL KEYWORD INPUT:;      /NAN - Set this keyword to cause the routine to check for occurrences of;            the IEEE floating-point value NaN in the input data.  Elements with;            the value NaN are treated as missing data.;      /DOUBLE - By default, if the input Array is double-precision, complex, ;                or double complex, the result is of the same type;  64 bit;                integers are also returned as double.   Otherwise the result;                the  result is floating-point.   Use of the /DOUBLE keyword ;                forces a double precision output.   Note that internal ;                computations are always done in double precision.; OUTPUTS:;       The average value of the array when called with one parameter.;;       If DIMENSION is passed, then the result is an array with all the;       dimensions of the input array except for the dimension specified,;       each element of which is the average of the corresponding vector;       in the input array.;;       For example, if A is an array with dimensions of (3,4,5), then the;       command B = AVG(A,1) is equivalent to;;                       B = FLTARR(3,5);                       FOR J = 0,4 DO BEGIN;                               FOR I = 0,2 DO BEGIN;                                       B[I,J] = TOTAL( A[I,*,J] ) / 4.;                               ENDFOR;                       ENDFOR;; RESTRICTIONS:;       Dimension specified must be valid for the array passed; otherwise the;       input array is returned as the output array.; PROCEDURE:;       AVG(ARRAY) = TOTAL(ARRAY, /DOUBLE)/N_ELEMENTS(ARRAY) when called with ;       one parameter.; MODIFICATION HISTORY:;       William Thompson        Applied Research Corporation;       July, 1986              8201 Corporate Drive;                               Landover, MD  20785;       Converted to Version 2      July, 1990;       Replace SUM call with TOTAL    W. Landsman    May, 1992;       Converted to IDL V5.0   W. Landsman   September 1997;       Added /NAN keyword   W. Landsman      July 2000;       Accept a scalar input value    W. Landsman/jimm@berkeley   November 2000;       Internal calculations always in double precision W. Landsman March 2002;       Return NAN if all values in array are NAN  W. Landsman April 2002;       Fixed coding bug if all values in array are NAN W. Landsman Jan 2004;- ON_ERROR,2 S = SIZE(ARRAY,/STR) IF S.N_ELEMENTS EQ 1 THEN RETURN, array[0] IF S.N_ELEMENTS EQ 0 THEN $        MESSAGE,'Variable must be an array, name= ARRAY';    IF N_PARAMS() EQ 1 THEN BEGIN        IF KEYWORD_SET(NAN) THEN NPTS = TOTAL(FINITE(ARRAY) ) $                            ELSE NPTS = N_ELEMENTS(ARRAY)        IF NPTS EQ 0 THEN AVERAGE = !VALUES.F_NAN ELSE $                          AVERAGE = TOTAL(ARRAY, NAN=NAN,/DOUBLE) / NPTS    ENDIF ELSE BEGIN        IF ((DIMENSION GE 0) AND (DIMENSION LT S.N_DIMENSIONS)) THEN BEGIN                AVERAGE = TOTAL(ARRAY,DIMENSION+1,NAN=NAN,/DOUBLE) ; Install a bug workaround since TOTAL(A,/NAN) returns 0 rather than NAN if ; all A values are NAN.                 IF KEYWORD_SET(NAN) THEN BEGIN                     NPTS = TOTAL(FINITE(ARRAY),DIMENSION+1 )                      BAD = WHERE(NPTS EQ 0, NBAD)                     AVERAGE = AVERAGE/(NPTS>1)                     IF NBAD GT 0 THEN AVERAGE[BAD] = !VALUES.D_NAN                 ENDIF ELSE AVERAGE = AVERAGE/S.DIMENSIONS[DIMENSION]                           END ELSE $                MESSAGE,'*** Dimension out of range, name= ARRAY'    ENDELSE; Convert to floating point unless of type double, complex, or L64, or; if /DOUBLE is set. IF NOT KEYWORD_SET(DOUBLE) THEN BEGIN     CASE S.TYPE OF     5: RETURN, AVERAGE     6: RETURN, COMPLEXARR( FLOAT(AVERAGE), FLOAT(IMAGINARY(AVERAGE)) )     9: RETURN, AVERAGE    14: RETURN, AVERAGE    15: RETURN, AVERAGE    ELSE: RETURN, FLOAT(AVERAGE)  ENDCASE  ENDIF ELSE RETURN, AVERAGE END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -