cupyx.scipy.signal.minimum_phase#
- cupyx.scipy.signal.minimum_phase(h, method='homomorphic', n_fft=None)[源代码][源代码]#
将线性相位FIR滤波器转换为最小相位
- 参数:
- 返回:
h_minimum – 滤波器的最小相位版本,长度为
(length(h) + 1) // 2。- 返回类型:
array
备注
Hilbert [1] 或同态 [4] [5] 方法都需要选择一个FFT长度来估计滤波器的复倒谱。
在Hilbert方法的情况下,与理想频谱
epsilon的偏差与阻带零点的数量n_stop和FFT长度n_fft有关,如下:epsilon = 2. * n_stop / n_fft
例如,如果有100个阻带零点和2048的FFT长度,
epsilon = 0.0976。如果我们保守地假设阻带零点的数量比滤波器长度少一个,我们可以将FFT长度设为满足``epsilon=0.01``的下一个2的幂,如下:n_fft = 2 ** int(np.ceil(np.log2(2 * (len(h) - 1) / 0.01)))
这为Hilbert方法和同态方法都提供了合理的结果,并且在
n_fft=None时给出了使用的值。存在多种创建最小相位滤波器的替代实现方法,包括零反转 [2] 和谱分解 [3] [4] [5]。更多信息,请参阅:
引用