Dist函数详解1、Dist函数的算法如下(很显然该算法的本质就是常说的欧⽒距离算法)
R(i,j) = SQRT(F(i)^2 + G(j)^2)  where:
F(i) = i  IF 0 <= i <= n/2
= n-i  IF i > n/2
G(i) = i  IF 0 <= i <= m/2
= m-i  IF i > m/2array工艺详解
图解:tvscl,dist(200)
扩展:SURFACE, DIST(20), /SAVE
IDL实现源码:
; $Id: //depot/Release/ENVI51_IDL83/idl/idldir/lib/dist.pro#1 $
;
;
Copyright (c) 1982-2013, Exelis Visual Information Solutions, Inc. All
;      rights reserved. Unauthorized reproduction is prohibited.
;
;+
; NAME:
;    DIST
;
; PURPOSE:
;    Create a rectangular array in which each element is proportional
;    to its frequency.  This array may be used for a variety
;    of purposes, including frequency-domain filtering and
;
    making pretty pictures.
;
; CATEGORY:
;    Signal Processing.
;
; CALLING SEQUENCE:
;    Result = DIST(N [, M])
;
; INPUTS:
;    N = number of columns in result.
;    M = number of rows in result.  If omitted, N is used to return
;
        a square array.
;
; OUTPUTS:
;    Returns an (N,M) floating array in which:
;
;    R(i,j) = SQRT(F(i)^2 + G(j)^2)  where:
;        F(i) = i  IF 0 <= i <= n/2
;              = n-i  IF i > n/2
;        G(i) = i  IF 0 <= i <= m/2
;              = m-i  IF i > m/2
;
;
SIDE EFFECTS:
;    None.
;
; RESTRICTIONS:
;    None.
;
; PROCEDURE:
;    Straightforward.  The computation is done a row at a time.
;
; MODIFICATION HISTORY:
;    Very Old.
;
    SMR, March 27, 1991 - Added the NOZERO keyword to increase efficiency.
;                (Recomended by Wayne Landsman)
;    DMS, July, 1992.  - Added M parameter to make non-square arrays.
;  CT, RSI, March 2000: Changed i^2 to i^2. to avoid overflow.
;-
function dist,n,m  ;Return a rectangular array in which each pixel = euclidian
;distance from the origin.
compile_opt idl2
on_error,2              ;Return to caller if an error occurs
n1 = n[0]
m1 = (n_elements(m) le 0) ? n1 : m[0]
x=findgen(n1)        ;Make a row
x = (x < (n1-x)) ^ 2    ;column squares
a = FLTARR(n1,m1,/NOZERO)    ;Make array
for i=0L, m1/2 do begin    ;Row loop
y = sqrt(x + i^2.) ;Euclidian distance
a[0,i] = y    ;Insert the row
if i ne 0 then a[0, m1-i] = y ;Symmetrical
endfor
return,a
end
2、⽤法:
Dist(20,20)⽣成⼀个20×20的数组,当⽤户输⼊Dist(20),则默认⾏与列都是20。
3、IDL帮助的解释:
DIST
The DIST function creates an array in which each array element value is proportional to its frequency. This array may be used for a variety of purposes, including frequency-domain filtering.
This routine is written in the IDL language. Its source code can be found in the file dist.pro in the lib subdirectory of the IDL distribution.
Examples
; Display the results of DIST as an image:
TVSCL, DIST(100)
Syntax
Result = DIST(N [, M])
Return Value
Returns a rectangular array in which the value of each element is proportional to its frequency.
Arguments
N
The number of columns in the resulting array.
M
The number of rows in the resulting array. If M is omitted, the resulting array will be N by N.
Keywords
None.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。