1

我正在使用 pythran 将我的 python+numpy 代码转换为 C++,到目前为止,一切都非常有效,生成的代码非常有效。但是,我的代码需要使用 numpy.ffr.rfft 和 irfft(快速傅里叶变换),pythran 显然不支持:

import numpy as np

# pythran export testFunc(float[])
def testFunc(signal):
    X = np.fft.rfft(signal,n=1024)

>pythran Foo.py
CRITICAL I am in trouble. Your input file does not seem to match 
Pythran's constraints...
E: Attribute 'fft' unknown (Foo.py, line 5)

我怎么可能做到这一点?如果我从 python 代码中调用快速傅立叶变换的 C 实现(我知道这可以做到),pythran 会使用它还是会抱怨它?

编辑:我将一个简单的 C 函数编译成一个 so 模块,然后我可以从我的 python 代码中调用它。当从 python 调用时,所有这些都可以正常工作,但是 pythran 在导入时不起作用:

CRITICAL I've got a bad feeling about this...
E: source code not available

所以看起来 pythran 不适用于已编译的 .so 文件。

4

1 回答 1

0

简短的回答:

已通过提交eb9e89373bnumpy.fft.rfft添加了对Pythran的支持,您的代码现在应该可以正确编译。

长答案:

在 Pythran 中添加对新函数/包的支持意味着为此函数编写 C++ 代码(可能是现有函数的包装器)并将其注册到 Pythran 中,以便翻译器对其有足够的了解以指导其编译过程。

于 2018-04-30T05:18:37.133 回答