def tukey_z_scale(z, center, length, alpha=0.25, points=101):
"""
:param z: z-coordinate
:param center: center of Tukey window
:param length: length of Tukey window
:param alpha: rolloff (percentage of window)
:param points: number of points in Tukey window
:return: z_scale (scale, relative to 1.0)
"""
import numpy as np
from scipy.signal import tukey
z = np.abs(z)
zmin = np.abs(center) - length / 2
zmax = np.abs(center) + length / 2
z_tukey_win = np.linspace(zmin, zmax, points)
z_tukey_amp = tukey(points, alpha)
if z < zmin or z > zmax:
z_scale = 0.0
else:
z_scale = z_tukey_amp[np.min(np.where(z_tukey_win >= z))]
return z_scale
评论列表
文章目录