fftw_complex从C到python与CFFI

时间:2016-02-04 13:01:57

标签: python c fftw python-cffi

问题:我想将C的结果从FFTW返回到Python。结果存储在fftw_complex类型中。我该怎么办?

背景:我正在与Cmake合作,尝试通过FFTW呼叫C,然后将结果传递给Python。我这样做是为了学习Cmake的基础知识。下面我有一个函数int example_FFT(int NUM_POINTS),它对长度为NUM_POINTS的序列进行FFT。序列的类型为fftw_complex,它是一个包含实数和虚数对的结构。在我的例子中,所有实部都等于1,虚部等于0.

我可以使用Cmake进行编译,并成功通过Python中的test.py测试。

test.py:

import pytest
from example import ffi, lib

def test_transform_ones():
    NUM_POINTS = int(4);
    assert lib.example_FFT(NUM_POINTS) == 4.0

C代码:

int example_FFT(int NUM_POINTS) {
   fftw_complex signal[NUM_POINTS];
   fftw_complex result[NUM_POINTS];

   fftw_plan plan = fftw_plan_dft_1d(NUM_POINTS,
                                     signal,
                                     result,
                                     FFTW_FORWARD,
                                     FFTW_ESTIMATE);

   generate_signal(signal);//Set all real values to one. Imag to 0.
   fftw_execute(plan);

   fftw_destroy_plan(plan);

   return result[0][0];
}

我对C很陌生,并为我的问题表达中的更精确而道歉。

0 个答案:

没有答案