91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

江源县| 金塔县| 永修县| 简阳市| 南召县| 峡江县| 寻甸| 南丹县| 新竹县| 菏泽市| 安新县| 恩施市| 延川县| 大厂| 襄汾县| 齐河县| 南岸区| 和硕县| 繁峙县| 克东县| 古蔺县| 古丈县| 郧西县| 贺州市| 会同县| 罗江县| 金溪县| 高碑店市| 浮山县| 铜川市| 寿宁县| 阿合奇县| 巴中市| 浦江县| 姚安县| 右玉县| 晋宁县| 土默特右旗| 石城县| 丹凤县| 天气|