标签:style blog http color os io ar for 2014
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/2
图解: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帮助的解释:
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.
; Display the results of DIST as an image:
TVSCL, DIST(100)
Result = DIST(N [, M])
Returns a rectangular array in which the value of each element is proportional to its frequency.
The number of columns in the resulting array.
The number of rows in the resulting array. If M is omitted, the resulting array will be N by N.
None.
标签:style blog http color os io ar for 2014
原文地址:http://www.cnblogs.com/rockman/p/3946658.html