本文主要對如何將FFTW3編譯且移植到Android App上進行介紹,同時對各FFTW提供的一些快速傅里葉變換的方法在手機進行性能測試,總結出使用FFTW3進行小規模傅里葉變換的最佳方式。html
文章重點內容有:FFTW configure;編譯so庫;ARM NEON優化;float加速;多線程linux
第1部分爲快速入門版,如想查看更詳細的使用說明,請查看第2部分 : http://he-kai.com/?p=38 內容android
1. 下載好fftw-3.3.3.tar.gz和fftw_android項目後,將目錄結構按以下方式放置git
—->parent foldergithub
—->fftw-3.3.3多線程
—->fftw_androideclipse
2. Eclipse中導入,選擇已有項目,將fftw_android項目導入。運行爲Android Application,在手機上查看運行效果。性能
若出現錯誤,請檢查錯誤輸出,主要檢查Eclipse中NDK路徑是否配置好,以及在項目上嘗試右鍵Android Tool-> Fix Project Properties 和Add Native Support。若仍是有報錯,選擇錯誤的視圖,將全部的錯誤選中,刪除,再運行看是否能正常編譯運行經過。測試
3. 若想要觀察各傅里葉變換方法的性能,打開Logcat,增長過濾器,將Application欄填爲com.hekai.fftw_android,從而將此程序的全部LOG輸出過濾顯示出來。優化
下表爲個人測試結果
測試數據:160 x 160 實數二維矩陣
測試手機:Google Nexus 4( Qualcomm APQ8064 1.5GHz x 4)
方法 | Avg(ms)(10 times) |
ffwt_plan_dft_2d | 58.013794 |
ffwt_plan_dft_r2c_2d | 25.4669923 |
ffwtf_plan__dft_r2c_2d | 19.3967774 |
ffwtf_plan__dft_r2c_2d(neon) | 9.5950195 |
ffwtf_plan__dft_r2c_2d(threads=4) | 30.2916016 |
ffwtf_plan__dft_r2c_2d(threads=4)(neon) | 18.9395753 |
另外,還有一篇帖子: 編譯且移植FFTW3 https://blog.csdn.net/flfihpv259/article/details/80819084