【问题标题】:What should I feed to real FFT functions in vDSP?我应该为 vDSP 中的真实 FFT 函数提供什么?
【发布时间】:2021-05-27 15:16:56
【问题描述】:

vDSP_fft_zrop 的函数签名(实际上是 vDSP 中的大多数 FFT 函数)接受两个 DSPSplitComplex 结构作为输入和输出。然而,对于真正的 FFT 计算,前向 FFT 只接受实数值的输入,而后向 FFT 只产生实数值的输出。那么我应该如何为全实值填充输入/输出DSPSplitComplex 结构?

为了更清楚地声明,如果我要在下面实现一个更常见的 API:

void forward_fft( std::complex<float>* output, const float* input, unsigned size);

很明显,我应该使用vDSP_ztoc 将vDSP 函数的输出交错到output 内存,但是我应该如何处理input 内存?我应该这样做:

DSPSplitComplex input_for_vdsp;
input_for_vdsp.realp = input;
input_for_vdsp.imagp = nullptr

,或者我应该为imagp指针分配内存?

【问题讨论】:

  • 是哪个vDSP功能?
  • @user253751 vDSP_fft_zrop 在描述中提到。实际上所有的实 FFT 函数。

标签: c++ accelerate-framework vdsp


【解决方案1】:

您可以将实数值表示为使用复数值的实部和虚部的奇偶配置。完整讨论请参阅 Apple 的 Data Packing for Fourier Transforms 文章。

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2012-10-06
    • 2017-08-22
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    相关资源
    最近更新 更多