Python 使用scipy.signal方法强制数据类型
当使用不同深度的浮点和整数时,我正在测量各种scipy函数(scipy.signal.lfilter、scipy.signal.filtfilt等)的性能(执行时间) 如何强制输入所需的数字类型和深度?让我们以lfilter为例:Python 使用scipy.signal方法强制数据类型,python,scipy,signal-processing,execution,Python,Scipy,Signal Processing,Execution,当使用不同深度的浮点和整数时,我正在测量各种scipy函数(scipy.signal.lfilter、scipy.signal.filtfilt等)的性能(执行时间) 如何强制输入所需的数字类型和深度?让我们以lfilter为例: B, A = iirfilter(some params) ZI = lfiltic(B, A, Y0) Y, D = lfilter(B, A, X, zi = ZI) 例如,我想在哪里使用.astype(np.float32),以确保lf
B, A = iirfilter(some params)
ZI = lfiltic(B, A, Y0)
Y, D = lfilter(B, A, X, zi = ZI)
例如,我想在哪里使用.astype(np.float32),以确保lfilter确实在float32中进行内部处理(如果可能的话)
我知道有很多关于浮点和整数之间哪个运行得更快的讨论,我相信大家的共识是它随CPU模型的不同而不同。考虑到这一点,我将在最终将处理“真实世界”数据的CPU上执行这些测试,即Intel Core i7-8750H。您研究过
lfilter
代码吗?有相当多的python设置代码。@hpauij确实有一些python设置代码,但我使用的是一个IIR过滤器,其中len(a)>1,所以我绕过所有这些,直接转到底部的一行调用。那个电话冒险进入C(?)的东西,所以我不知道发生了什么。现在,我还要看一下lfilter_zi()和lfiltic()代码。注意,后者将np.float64强制在一个变量上,并假定类型通过代码传播。“C”数学库是为有限的类型组合编译的,通常为float
、double
等使用不同的函数。因此Python接口代码必须选择一个,并相应地翻译输入/输出数据类型。