2012-05-09 7 views
2

実ベクトルを分割するために、実際のフォームを分割加速、私はまだについて少し困惑している一つのことは、この部分です:フレームワークFFT vDSPztoc私はフレームワークを加速使って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); 

最終的な配列はどのように見えますか? 私は、 "分割リアルフォーム"と "分割リアルベクトル"の区別については混乱しています。私はそれが何を意味するのかをある程度理解しているかもしれませんが、私は正しいアイデアがあることを確かめたいと思います。

加速などの入力データを表すダブルデータの配列は、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であるが、第二第三のように最初のビンの虚数部であり、第1のビンの実部である:それはありますか?あるいは、第3要素と第4要素を第1ビンの実数成分と虚数成分にして、そのセットアップのような第2要素ナイキスト周波数ですか?

少し不明ですが、この質問は非常に簡単で、私が必要とするのは迅速な確認/修正です。

ありがとうございます!

+0

私は今あなたがunpackerを呼ぶことになっていると思います。最後の出力は上に示した通りです。 – shim

答えて

1

最終形{C [0]、C [1]、C [2]、...、C [n/2]} は正しいです。

他の同様のスレッドで説明したように、各ビンの頻度は です。F = Fs/N ここで、Fsはサンプリング周波数です.Nは入力配列の要素の総数です。あなたはN/2の複素数(半分の実数半分の虚数)で終わります。

関連する問題