微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该为 vDSP 中的实际 FFT 函数提供什么?

如何解决我应该为 vDSP 中的实际 FFT 函数提供什么?

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

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

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

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

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。