我的人生路  
          日歷
          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011
          統(tǒng)計(jì)
          • 隨筆 - 74
          • 文章 - 57
          • 評(píng)論 - 7
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          顏色

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

           

          在java算法(Scott robert ladd)中看到快速傅立葉變換,講的很詳細(xì),摘錄下來跟大家分享!
          以下正文:
          FFT或許是已知的最有效的算法,他應(yīng)用范圍廣。從信號(hào)的處理到數(shù)據(jù)壓縮到地震分析和圖形放大,F(xiàn)FT通過領(lǐng)域間的信息轉(zhuǎn)換
          提供了一個(gè)強(qiáng)有力的工具,本節(jié)講討論FFT如何改進(jìn)多項(xiàng)式乘法的性能:
           到目前為止,我用系數(shù)形式表示多項(xiàng)式,但有些應(yīng)用程序最適合用point-value形式表示多項(xiàng)式,任何多項(xiàng)式都可被n個(gè)點(diǎn)值
           對(duì)來表示,這里,value是多項(xiàng)式在給定點(diǎn)point的值,許多數(shù)學(xué)應(yīng)用要使用FFT實(shí)現(xiàn)點(diǎn)值和系數(shù)之間的快速變換。
              兩個(gè)多項(xiàng)式A和B快速相乘的過程如下:
           1,用同一組值把A和B從十形式轉(zhuǎn)換為點(diǎn)值形式pA和pB。
           2。pA和pB對(duì)應(yīng)的點(diǎn)值相乘,得到pC。
           3。對(duì)pC進(jìn)行插值得到系數(shù)多項(xiàng)式C,他等于A乘上B。
          表面上看,上述算法比在mul中使用之際相乘并不高效--卻更復(fù)雜,選擇合適的計(jì)算值可以使點(diǎn)-值乘法非常快。

          public class PolynomialFFTextends polynomial
          {
           //utility field
           final protected static Complex p|2|=new Complex(0.0D,6.283185307179586D);

           //utility methods
           protected static int log2(int n)
           {
            int x=1;
            int c=0;
            while(true)
            {
             if (x>=n) break;
             ++c;
             x<<=1;
             if (x==0) break;
             
            }
            return c;
           }
           protected static int FlipBits(int k,int bits)
           {
            int lm=1<<(bits-1);
            int rm=1;
            int r=0;
            while (lm != 0)
            {
             if ((k&rm)!=0)
             {
              r|=lm;
              lm>>=1;
              rm<<=1;
             }
            }
            return r;
           }
          };

          //increase degree to power of two
          protected static PolynomialFFT stretchFFT(PolynomialFFT p)
          {
           int n=1;
           int d=p.m_nDegree;
           while(true)
           {
            if (d<=n) break;
            n<<=1;
            if (n==0)
            {
             throw new ArithmeticException("StretchFFT failed");
            }
            n<<=1;
            return new PolynomialFFT(p.stretch(n));
           }
          }

          //待續(xù)



          歡迎大家訪問我的個(gè)人網(wǎng)站 萌萌的IT人
          posted on 2006-02-16 10:16 一天一點(diǎn)愛戀 閱讀(1096) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          Copyright © 一天一點(diǎn)愛戀 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 应城市| 内丘县| 富民县| 绿春县| 桃源县| 留坝县| 尼木县| 通化县| 竹山县| 宁强县| 乌鲁木齐县| 隆德县| 油尖旺区| 吉木乃县| 宜君县| 喀什市| 美姑县| 泸溪县| 酒泉市| 遂溪县| 长岭县| 中宁县| 上饶县| 隆化县| 北海市| 沂南县| 尼勒克县| 封丘县| 涿州市| 西平县| 阳城县| 靖远县| 禹城市| 仁寿县| 广灵县| 九台市| 汕头市| 沙洋县| 郸城县| 马尔康县| 洛隆县|