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

📄 dbsort.pro

📁 basic median filter simulation
💻 PRO
字号:
function dbsort,list,items,REVERSE = rev;+; NAME:;       DBSORT; PURPOSE:;       Routine to sort list of entries in data base;; CALLING SEQUENCE: ;       result = dbsort( list, items , [ REVERSE = ]);; INPUTS:;       list - list of entry numbers to sort;               -1 to sort all entries;       items - list of items to sort (up to 9 items);; OUTPUT:;       result - numeric vector giving input list sorted by items;; OPTIONAL KEYWORD INPUT:;       REVERSE - scalar or vector with the same number of elements as the;         the number of items to sort.  If the corresponding element of REVERSE ;         is non-zero then that item is sorted in descending rather than ;         ascending order.;; EXAMPLE:;       Sort an astronomical catalog with RA as primary sort, and declination;       as secondary sort (used when RA values are equal);;          IDL> NEWLIST = DBSORT( -1, 'RA,DEC' );;       If for some reason, one wanted the DEC sorted in descending order, but;       the RA in ascending order;;          IDL> NEWLIST = DBSORT( -1, 'RA,DEC', REV = [ 0, 1 ] );; METHOD:;       The list is sorted such that each item is sorted into;       asscending order starting with the last item.; COMMON BLOCKS:;       DBCOM; PROCEDURES USED:;       ZPARCHECK, BSORT, DBEXT, DB_ITEM; HISTORY;       VERSION 1  D. Lindler  Oct. 86;       Added REVERSE keyword   W. Landsman        August, 1991;       Avoid use of EXECUTE() for V6.1 or later   W. Landsman Dec 2006;- compile_opt idl2 if N_params() LT 2 then begin     print,'Syntax: newlist = dbsort( list, items, [ REVERSE = ] )'     return, -1 endif;---------------------------------------------------------; data base common block, see DBOPEN for meanings common db_com,QDB,QITEMS,QLINK no_exec = !VERSION.RELEASE GE '6.1'; check parameters zparcheck, 'DBSORT', list, 1, [1,2,3], [0,1], 'entry list' zparcheck, 'DBSORT', items, 2, [1,2,3,7], [0,1], 'item list'; extract values of items db_item, items, it nitems = N_elements(it)                    ;Number of items if nitems GT 9 then message, $        'ERROR -  Can only sort on nine items or less'                                            ;Verify REVERSE vector if not keyword_set(REV) then rev = bytarr(nitems) else $         if N_elements(rev) NE nitems then $             message,'ERROR - REVERSE vector must contain ' + $                   strtrim(nitems,2) + ' elements'; make list vector qnentry = long(qdb,84) if list[0] EQ -1 then vlist = lindgen(qnentry)+1 else vlist = list; create line to execute in the form:;       dbext, vlist, it, v1,v2,...,v(nitems) case nitems of         1: dbext, vlist, it, v1        2: dbext, vlist, it, v1, v2        3: dbext, vlist, it, v1, v2, v3        4: dbext, vlist, it, v1, v2, v3, v4        5: dbext, vlist, it, v1, v2, v3, v4, v5        6: dbext, vlist, it, v1, v2, v3, v4, v5, v6        7: dbext, vlist, it, v1, v2, v3, v4, v5, v6, v7        8: dbext, vlist, it, v1, v2, v3, v4, v5, v6, v7, v8        9: dbext, vlist, it, v1, v2, v3, v4, v5, v6, v7, v8, v9 endcase; sort on each item sub = lindgen(N_elements(vlist))               ;list of subscripts for i = 0,nitems-1 do begin; get item        j = nitems-i        vv = 'v' + strtrim(j,2)         if no_exec then $            v = (scope_varfetch(vv, level=0)) else $            status = execute('v=' + vv); perform previous sorts on item        if i GT 0 then v = v[sub]         ; sort item        sub = sub[ bsort( v, REVERSE = rev[j-1] ) ] end; return sorted list return, vlist[sub] end

⌨️ 快捷键说明

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