ZPL手册911011

返回函数列表

功能:

使用 FFT 算法计算衍射点扩散函数 (PSF) ,并将数据存储于指定的矢量数组中( VEC1、VEC2、VEC3 或 VEC4 )。


语法:

GETPSF wave, field, sampling, vector, unnormalized, phaseflag, imagedelta


详述:

wavelength 指定用于计算的波长编号,wavelength 为 0 时表示多色计算。field 必须为 1 到最大 视场数之间的整数,表示要计算的视场编号。sampling 可为 1 (32 x 32)、2 (64 x 64)、3 (128 x 128) 等... 最大为 2048 x 2048。vector 为 1 到 4 之间的整数,指定数据存储的矢量数组(VEC1,VEC2,VEC3 或 VEC4)。unnormalized 值为 0 或 1,为 0 表示返回的所有数据归一化;否则为 1。phaseflag 可 为 0 或 1,为 0 表示返回强度数据,为 1 表示返回角度数据。imagedelta 表示 PSF 点之间的间隔(以微米为单位),为 0 表示采用默认间距。波长必须是单色光才能计算相位数据。如果给定的任 何变量超出有效范围,则会使用最近的值替代。返回的数据存储在指定的矢量数组变量中,存储格式如下所示:矢量位置 0:矢量数组中 PSF 数据点的总数。通常,此数值为 4*n*n,其中 n 是采样尺寸(32、64 等)。例如,如果采样密度是 2,则光瞳采样将为 64 x 64,此时数组中有 128 x 128(即 16,384)个 值。每个数值需要 8 个字节,总共 131 kb。如果采样密度为 1024 ,则数组至少需要 8 Mb 存储数据,还需要 64 Mb 或更多空间来计算 PSF。矢量位置 0 返回其他值表示出现不同错误。返回 0 表示终止计算。返回 -1,表示矢量数组的大小不足以容纳所有数据,可使用 SETVECSIZE 来增大数组尺 寸。返回 -2,表示没有足够系统 RAM 来计算 PSF 数据。返回 -3,表示计算 PSF 时出现常规错误。


示例:

!This macro computes the PSF
! for the currently loaded lens, polychromatic,
! at the first field,
! and a 32x32 grid density (sampling = 1),
! data will be placed in vector 1,
! normalized to 1,
! no phase data,
! default image delta.
SETVECSIZE 4500
GETPSF 0, 1, 1, 1, 0, 0, 0 np = vec1(0)
IF (np == 0)
PRINT "PSF Computation aborted." GOTO 1
ENDIF
IF (np == -1)
PRINT "SETVECSIZE too small for PSF data." GOTO 1
ENDIF
IF (np == -2)
PRINT "Not enough system RAM for PSF data." GOTO 1
ENDIF
PRINT "There are ", np, " data points, spaced ", vec1(np+1), " micrometers apart". LABEL 1



该文档由光学课堂(www.optkt.cn)生成

最后更新时间:2020/3/7 12:38:35

登录 后发表评论
0条评论
还没有人评论过~