2012-05-09 33 views
2

我實現在使用加速框架iOS的基於加速度計的FFT真正的載體,但有一點我還是有點困惑的是這個部分:加快框架FFT vDSPztoc分裂真正形成分裂

/* 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); 

最終陣列的外觀如何? 我對「分裂真實形式」和「分裂真實矢量」之間的區別感到困惑。我可能對它的含義有所瞭解,但我想確保我有正確的想法。

通過vDSP_ctoz將表示輸入數據(如加速度)的起始數據(雙精度數組)放入偶數形式。那麼結果就是以這種形式(從蘋果公司的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,第二個是第一倉的實部第三位的是第一格的虛部,等等?或者是奈奎斯特頻率的第二個元素就像在這種設置中一樣,使第三和第四元素成爲第一個元素的實部和虛部?

這有點不清楚,但我想這個問題很簡單,我需要的只是一個快速確認/更正。

謝謝!

+0

我想現在你應該調用解包器,最終的輸出如上所示。 – shim

回答

1

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

而且每個倉的頻率,如在其它類似的線程描述是 F = Fs的/ N 其中Fs是採樣頻率,N是輸入數組中元素的總數量。你最終得到N/2個複數(半真半假)。