主权项 |
一种基于Cooley‑Tukey的FFT算法,其特征是:利用FPGA芯片,采用Radix‑4的碟形运算,把N点FFT分解成一个以上的短序列的FFT,N=r1*r2,包括以下步骤:步骤1:将x(n)改写成x(n1,n0),利用<maths num="0001"><math><![CDATA[<mrow><mi>x</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mi>x</mi><mrow><mo>(</mo><msub><mi>r</mi><mn>2</mn></msub><msub><mi>n</mi><mn>1</mn></msub><mo>+</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><mi>x</mi><mrow><mo>(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>,</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>n</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>n</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000968579020000011.GIF" wi="1058" he="166" /></maths>步骤2:做r2个r1点的FFT,得到X1(k0,n0);<maths num="0002"><math><![CDATA[<mrow><msub><mi>X</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>Σ</mo><mrow><msub><mi>n</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn></mrow></munderover><mi>x</mi><mrow><mo>(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><msubsup><mi>W</mi><msub><mi>r</mi><mn>1</mn></msub><mrow><msub><mi>n</mi><mn>1</mn></msub><msub><mi>k</mi><mn>0</mn></msub></mrow></msubsup><mo>,</mo><msub><mi>k</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn><mo>;</mo></mrow>]]></math><img file="FDA0000968579020000012.GIF" wi="1046" he="158" /></maths>步骤3:把N个X1(k0,n0)乘以相应的旋转因子<img file="FDA0000968579020000013.GIF" wi="137" he="85" />组成X1’(k0,n0);<maths num="0003"><math><![CDATA[<mrow><msup><msub><mi>X</mi><mn>1</mn></msub><mo>′</mo></msup><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>X</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><msubsup><mi>W</mi><mi>N</mi><mrow><msub><mi>n</mi><mn>0</mn></msub><msub><mi>k</mi><mn>0</mn></msub></mrow></msubsup></mrow>]]></math><img file="FDA0000968579020000014.GIF" wi="550" he="63" /></maths>步骤4:做r1个r2点FFT,得到X2(k0,k1);<maths num="0004"><math><![CDATA[<mrow><msub><mi>X</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>k</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>Σ</mo><mrow><msub><mi>n</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><mn>1</mn></mrow></munderover><msup><msub><mi>X</mi><mn>1</mn></msub><mo>′</mo></msup><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><msubsup><mi>W</mi><msub><mi>r</mi><mn>2</mn></msub><mrow><msub><mi>n</mi><mn>0</mn></msub><msub><mi>k</mi><mn>1</mn></msub></mrow></msubsup><mo>,</mo><msub><mi>k</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><mn>1</mn><mo>;</mo></mrow>]]></math><img file="FDA0000968579020000015.GIF" wi="1093" he="158" /></maths>步骤5:进行整序,得到X(k1,k0)=X(k),其中k=r1*k1+k0;X(k<sub>1</sub>,k<sub>0</sub>)=X<sub>2</sub>(k<sub>0</sub>,k<sub>1</sub>)。 |