2

问题:我想CFFTWto返回结果Python。结果存储在类型中fftw_complex。我该怎么办?

背景:我正在使用Cmake,试图通过调用FFTW然后C将结果传递给Python。我这样做是为了学习Cmake. 下面我有一个函数 ,int example_FFT(int NUM_POINTS)它对长度为 的序列进行 FFT NUM_POINTS。该序列的类型为fftw_complex,它是一个包含实数和虚数对的结构。在我的情况下,所有实部都等于 1,虚部等于 0。

我可以编译Cmake并成功通过测试 test.py, in Python

测试.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 语言很陌生,并为我的问题表述不够精确而道歉。

4

0 回答 0