zoukankan      html  css  js  c++  java
  • 素因子快速傅里叶变换

    一、功能

    用素因子分解算法计算复序列的离散傅里叶变换。序列的长度是数集{2,3,4,5,7,8,9,16}中的一个或几个素因子的乘机。

    二、方法简介

    序列(x(n))的离散傅里叶变换为

    [X(k)=sum_{n=0}^{N-1}x(n)W_{N}^{nk}, k=0,1,...,N-1 ]

    (N)可分解为两两互素因子的乘积,即

    [N=N_{1}cdot N_{2}cdot ...cdot N_{M}, (N_{i},N_{j})=1 (i eq j) ]

    那么素因子快速傅里叶变换算法由以下步骤组成:

    1、一维DFT映射为多维DFT

    对输入下标(n)作多因子简单映射,输出下标(k)作多因子孙子定理映射

    [left{egin{matrix}egin{align*}n &equiv sum_{i=1}^{M}frac{N}{N_{i}}n_{i} extup{mod} N\ k &equiv sum_{i=1}^{M}frac{N}{N_{i}}t_{i}k_{i} extup{mod} Nend{align*}end{matrix} ight., (n_{i},k_{i}=0,1,...,N_{i}-1) ]

    其中(t_i)满足

    [sum_{i=1}^{M}frac{N}{N_{i}}t_{i}equiv 1 extup{mod} N ]

    并记

    [egin{align*}x(n_{1},n_{2},...,n_{M}) &= x(frac{N}{N_{1}}n_{1}+...+frac{N}{N_{M}}n_{M}) \X(k_{1},k_{2},...,k_{M}) &= X(frac{N}{N_{1}}t_{1}k_{1}+...+frac{N}{N_{M}}t_{M}k_{M})end{align*} ]

    于是得到(M)维DFT,即

    [egin{align*}X(k_{1},k_{2},...,k_{M}) &= sum_{n_{1}=0}^{N_{1}-1} sum_{n_{2}=0}^{N_{2}-1}...sum_{n_{M}=0}^{N_{M}-1}x(n_{1},n_{2},...,n_{M})W_{N_{1}}^{n_{1}k_{1}}W_{N_{2}}^{n_{2}k_{2}}...W_{N_{M}}^{n_{M}k_{M}} \(k_{i} &= 0,1,...,N_{1}-1;i=1,2,...,M)end{align*} ]

    这样原来长度为(N)的一维DFT映射为长度分别为(N_1,N_2,...,N_M)(M)维DFT,从而一维长DFT可用多维短DFT实现。下面将说明,这些短DFT可用短循环卷积来计算。

    2、用Rader算法将DFT转换为循环卷积

    (p)为素数,(p)点DFT为

    [X(k)=sum_{n=0}^{p-1}x(n)W_{N}^{nk}, k=0,1,...,p-1 ]

    (n=0)(k=0)的点单独列出,则有

    [egin{align*}X(0)&=sum_{=0}^{p-1}x(n),\X(k)&=x(0)+ar{X}(k) , k=1,2,...,p-1end{align*} ]

    其中(ar{X}(k) = sum_{n=1}^{p-1}x(n)W_{N}^{nk} , k=1,2,...,p-1)

    [egin{Bmatrix}egin{align*}n &equiv g^{-u} extup{mod} p\ k &equiv g^{u} extup{mod} pend{align*}end{Bmatrix} ]

    则上面的DFT(ar{X}(k))就成为循环卷积

    [ar{X}(g^{v}) = sum_{u=0}^{p-2}x(g^{-u}W_{N}^{g^{v-u}}) , v = 0,1,...,p-2 ]

    3、用Winograd算法计算短卷积

    三、使用说明

    C语言实现方式如下

    
    
  • 相关阅读:
    使用BackgroundWorker组件进行异步操作编程《转》
    C#多线程控制进度条之长任务操作《转》
    模态进度条窗体实现<转>
    dev xtraReports使用《转》
    客户端IP
    WebService获取服务端硬件信息和客户端IP,MAC,浏览器信息,所在城市《转》
    c#多线程 Invoke方法的使用<转>
    C# windowform进度条《转》
    XtraReports 打印控件的简单使用《转》
    hdu Marriage Match II
  • 原文地址:https://www.cnblogs.com/liam-ji/p/11886068.html
Copyright © 2011-2022 走看看