亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache Commons Math3探索之快速傅立葉變換代碼示例

發布時間:2020-10-16 22:50:32 來源:腳本之家 閱讀:195 作者:狐帝 欄目:編程語言

上一篇文章中我們了解了Apache Commons Math4探索之多項式曲線擬合實現代碼,今天我們就來看看如何通過apache commons math4實現快速傅里葉變換,下面是具體內容。

傅立葉變換:org.apache.commons.math4.transform.FastFourierTransformer類。

用法示例代碼:

double inputData = new double[arrayLength]; 
// ... 給inputData賦值 
FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); 
Complex[] result = fft.transform(inputData, TransformType.FORWARD); 

使用還是非常簡單的。首先要創建待計算數據的數組,可以是double類型,亦可是org.apache.commons.math4.complex.Complex類型,然后創建org.apache.commons.math4.transform.FastFourierTransformer對象實例,最后調用其transform方法即可得到存放于復數數組中的傅立葉變換結果。
完整的示例代碼如下:

import org.apache.commons.math4.transform.DftNormalization; 
import org.apache.commons.math4.transform.FastFourierTransformer; 
import org.apache.commons.math4.transform.TransformType; 
interface TestCase 
{ 
  public Object run(List<Object> params) throws Exception; 
  public List<Object> getParams(); 
} 
class CalcFFT implements TestCase 
{ 
  public CalcFFT() 
  { 
   System.out.print("本算例用于計算快速傅立葉變換。正在初始化 計算數據(" + arrayLength + "點)... ..."); 
   inputData = new double[arrayLength]; 
   for (int index = 0; index < inputData.length; index++) 
   { 
     inputData[index] = (Math.random() - 0.5) * 100.0; 
   } 
   System.out.println("初始化完成"); 
  } 
  @Override 
  public List<Object> getParams() 
  { 
   return null; 
  } 
  @Override 
  public Object run(List<Object> params) throws Exception 
  { 
   FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); 
   Complex[] result = fft.transform(inputData, TransformType.FORWARD); 
   return result; 
  } 
  private double[] inputData = null; 
  private final int arrayLength = 4 * 1024*1024; 
} 
public class TimeCostCalculator 
{ 
  public TimeCostCalculator() 
  { 
  } 
  /** 
  * 計算指定對象的運行時間開銷。 
  * 
  * @param testCase 指定被測對象。 
  * @return 返回sub.run的時間開銷,單位為s。 
  * @throws Exception 
  */ 
  public double calcTimeCost(TestCase testCase) throws Exception 
  { 
   List<Object> params = testCase.getParams(); 
   long startTime = System.nanoTime(); 
   testCase.run(params); 
   long stopTime = System.nanoTime(); 
   System.out.println("start: " + startTime + " / stop: " + stopTime); 
   double timeCost = (stopTime - startTime) * 1.0e-9; 
   //   double timeCost = BigDecimal.valueOf(stopTime - startTime, 9).doubleValue(); 
   return timeCost; 
  } 
  public static void main(String[] args) throws Exception 
  { 
   TimeCostCalculator tcc = new TimeCostCalculator(); 
   double timeCost; 
   System.out.println("--------------------------------------------------------------------------"); 
   timeCost = tcc.calcTimeCost(new CalcFFT()); 
   System.out.println("time cost is: " + timeCost + "s"); 
   System.out.println("--------------------------------------------------------------------------"); 
  } 
} 

在i5四核處理器+16GB內存的臺式機上,計算4百萬點FFT,耗時0.7s。還是挺快的。

總結

以上就是本文關于Apache Commons Math4探索之快速傅立葉變換代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:Apache Commons Math4學習之數值積分實例代碼、apache zookeeper使用方法實例詳解等,有什么問題可以隨時留言,小編會及時回復大家的。最后推薦幾本有關Java編程方面不錯的書籍,免費下載,供廣大編程愛好及工作者參考,提高!

Java Web開發就該這樣學 (王洋著) pdf掃描版

https://www.jb51.net/books/561375.html

Spring+MyBatis企業應用實戰 完整pdf掃描版

https://www.jb51.net/books/560647.html

希望大家喜歡,更多精彩內容,就在https://www.jb51.net/

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌苏市| 聂拉木县| 阿巴嘎旗| 闽侯县| 兴城市| 临洮县| 光山县| 庆元县| 清水县| 津市市| 红桥区| 黎平县| 准格尔旗| 临高县| 临清市| 延安市| 洛宁县| 腾冲县| 吴忠市| 将乐县| 沂南县| 达孜县| 富平县| 特克斯县| 营口市| 桦甸市| 黎城县| 安庆市| 敖汉旗| 澄城县| 咸丰县| 南平市| 准格尔旗| 宾川县| 建德市| 呼伦贝尔市| 封丘县| 托里县| 通许县| 宁南县| 德惠市|