gpt4 book ai didi

ios - 加速框架 FFT vDSPztoc split real form to split real vector

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:51:34 28 4
gpt4 key购买 nike

我正在使用 Accelerate Framework 在 iOS 中实现基于加速度计的 FFT,但我仍然有点困惑的是这一部分:

/* The output signal is now in a split real form.  Use the  function
* vDSP_ztoc to get a split real vector. */
vDSP_ztoc(&A, 1, (COMPLEX *) obtainedReal, 2, nOver2);

最后的数组是什么样子的?我对“拆分实数形式”和“拆分实数向量”之间的区别感到困惑。我可能对它的含义有所了解,但我想确保我的想法是正确的。

起始数据,一个 double 组,表示加速度等输入数据,通过 vDSP_ctoz 以奇偶形式输入。那么结果就是这种形式(从Apple的vDSP指南中复制过来的):

{[DC,0],C[1],C[2],...,C[n/2],[NY,0],Cc[n/2],...,Cc[2],Cc[1]}

where
1. DC and NY are the dc and nyquist components (real valued),
2. C is complex in a split representation,
3. Cc is the complex conjugate of C in a split representation.

For an n size real array A, the complex results require 2n
spaces. In order to fit the 2n size result into an n size input and
since the complex conjugates are duplicate information, the real
FFT produces its results as follows:
{[DC,NY],C[1],C[2],...,C[n/2]}

在我的实现中(有效,我只是对输出感到困惑),我还调用了 vDSP_ztoc。它应该有这个调用,还是只在示例中完成,因为他们想要恢复数组以匹配原始数组(因为他们进行了反向转换)?

如果您应该这样称呼,那么 vDSP_ztoc 之后的最终形式是什么?是吗:

   {[DC,NY],C[1],C[2],...,C[n/2]}

或者输出数组中的第一个元素是 DC,第二个是第一个 bin 的实部,第三个是第一个 bin 的虚部,依此类推?或者第二个元素是否像该设置中的奈奎斯特频率一样,使第三个和第四个元素成为第一个 bin 的实部和虚部?

有点不清楚,但我想这个问题很简单,我需要的只是快速确认/更正。

谢谢!

最佳答案

所以最终的形式 {C[0],C[1],C[2],...,C[n/2]}是正确的。

并且每个 bin 的频率是,正如其他类似线程中所描述的那样 F = Fs/N其中 Fs 是采样频率,N 是输入数组中元素的总数。你最终得到 N/2 个复数(一半是实数,一半是虚数)。

关于ios - 加速框架 FFT vDSPztoc split real form to split real vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com