Clojure(JVMで動くLISP系)でJavaの数値計算ライブラリApache Commons Mathを使う(3) 高速フーリエ変換(FFT)を実行してJFreeChartでプロットする。
今回はこの移植。
Javaの数値計算ライブラリApache Commons Mathを使う(3) 高速フーリエ変換(FFT)を実行してJFreeChartでプロットする。
コードはこんな感じで。
(ns mini.fft
(:import [org.apache.commons.math3.complex Complex]
[org.apache.commons.math3.transform FastFourierTransformer DftNormalization TransformType]
[org.jfree.data.xy XYSeriesCollection XYSeries]
[org.jfree.chart ChartFactory ChartPanel]
[org.jfree.chart.renderer.xy XYLineAndShapeRenderer]
[javax.swing JFrame]))
(def n 256)
(def t (make-array Double/TYPE n))
(def y (make-array Double/TYPE n))
(def f (make-array Double/TYPE n))
(def fft (FastFourierTransformer. DftNormalization/STANDARD))
(dotimes [i n]
(aset t i (double i))
(aset y i (Math/sin (aget t i)))
(aset f i (- (/ (double i) (double n)) 0.5)))
(def result (.transform fft y TransformType/FORWARD))
(def resultShift (make-array Complex n))
(dotimes [i (/ n 2)]
(aset resultShift i (aget result (+ i (/ n 2))))
(aset resultShift (+ i (/ n 2)) (aget result i)))
(defn create-dataset []
(let [series (XYSeries. "Real Part")
series2 (XYSeries. "Imaginary Part")]
(dotimes [i n]
(.add series (aget f i) (.getReal (aget resultShift i)))
(.add series2 (aget f i) (.getImaginary (aget resultShift i))) )
(doto (XYSeriesCollection.)
(.addSeries series)
(.addSeries series2)
)))
(defn create-chart [dataset]
(ChartFactory/createXYLineChart
"Fast Fourier Transform"
"frequency"
"result"
dataset))
(defn display-chart [chart]
(let [frame (JFrame. "FFT")
plot (.getXYPlot chart)
renderer (XYLineAndShapeRenderer.)
chart-panel (ChartPanel. chart)]
(.setSeriesShapesVisible renderer 0 false) ; 線だけ
(.setSeriesShapesVisible renderer 1 false) ; 線だけ
(.setRenderer plot renderer)
(doto frame
(.add chart-panel)
(.pack)
(.setVisible true))))
(defn -main []
(let [dataset (create-dataset)
chart (create-chart dataset)]
(display-chart chart)))
(-main)
|
結果はこちら。
« 高周波・RFニュース 2025年12月5日 QorvoがUWBとAIを用いた人体検知を解説、SEMCOが低ESL MLCCをADASに使う提案、TaoglasがWi-Fi 6/7, UWB, ISM向け小型チップアンテナ発表、京セラが5G基地局開発断念と報道、Yageoがシャークフィン+ホイップアンテナ発表 | トップページ | 天空のアトラス イタリア館の至宝@大阪中之島美術館を観てきた。ファルネーゼのアトラスはやはりすごい。正義の旗もよかった。しかし何と言ってもレオナルドダヴィンチのアトランティコ手稿が本当に鏡文字で感動した。 »
「パソコン・インターネット」カテゴリの記事
- Google Antigravityで作った任意のポート数のTouchstone形式のSパラメータファイルを読み込み、dB、位相、スミスチャートを描くアプリSparameterViewerにTDR(Time Domain Reflectometry)機能を組み込む。サンプルコード3行渡せば1分もかからないで完成。(2026.01.15)
- RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/1/4-2026/1/11(2026.01.12)
- Google Antigravityで任意のポート数のTouchstone形式のSパラメータファイルを読み込み、dB、位相、スミスチャートを描くアプリSparameterViewerを作る。インストールしてすぐ一発で動くものができ、何度かやり取りしてほしいものが完璧にできた。これがVibe codingか…(2026.01.13)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2026年1月16日 Microwave JournalにDirect RF特集記事、NXPが5G RF事業を縮小、RCRTechのテスト・計測についてのレポート、MediaTekがDimensity 9500sと8000を発表、TDKの車載チップバリスタ、I-PEXのロック付きRF同軸コネクタ(2026.01.16)
- 高周波・RFニュース 2026年1月15日 IEEE Microwave MagazineはCMOS LNAレビューなど、Journal of Microwavesはアボカドのマイクロ波イメージングなど、LitePointが3つのワイヤレストレンドを調査、Ericsson ConsumerLabのCSP差別化レポート、Motorola Moto G Power 2026 分解(2026.01.15)
- 高周波・RFニュース 2026年1月12日 VIAVIが拡張現実を使ってRF信号を可視化するソリューション発表、Mini-CircuitsがMMICゲインイコライザ発売、LitePointがQualcommのWi-Fi 8テスト実証、低周波線路シミュレーション技術、Xiaomi Poco F8 Ultra分解動画など(2026.01.12)
- Google Antigravityで作った任意のポート数のTouchstone形式のSパラメータファイルを読み込み、dB、位相、スミスチャートを描くアプリSparameterViewerにTDR(Time Domain Reflectometry)機能を組み込む。サンプルコード3行渡せば1分もかからないで完成。(2026.01.15)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2026年1月16日 Microwave JournalにDirect RF特集記事、NXPが5G RF事業を縮小、RCRTechのテスト・計測についてのレポート、MediaTekがDimensity 9500sと8000を発表、TDKの車載チップバリスタ、I-PEXのロック付きRF同軸コネクタ(2026.01.16)
- 高周波・RFニュース 2026年1月15日 IEEE Microwave MagazineはCMOS LNAレビューなど、Journal of Microwavesはアボカドのマイクロ波イメージングなど、LitePointが3つのワイヤレストレンドを調査、Ericsson ConsumerLabのCSP差別化レポート、Motorola Moto G Power 2026 分解(2026.01.15)
- 高周波・RFニュース 2026年1月12日 VIAVIが拡張現実を使ってRF信号を可視化するソリューション発表、Mini-CircuitsがMMICゲインイコライザ発売、LitePointがQualcommのWi-Fi 8テスト実証、低周波線路シミュレーション技術、Xiaomi Poco F8 Ultra分解動画など(2026.01.12)
- Google Antigravityで作った任意のポート数のTouchstone形式のSパラメータファイルを読み込み、dB、位相、スミスチャートを描くアプリSparameterViewerにTDR(Time Domain Reflectometry)機能を組み込む。サンプルコード3行渡せば1分もかからないで完成。(2026.01.15)
« 高周波・RFニュース 2025年12月5日 QorvoがUWBとAIを用いた人体検知を解説、SEMCOが低ESL MLCCをADASに使う提案、TaoglasがWi-Fi 6/7, UWB, ISM向け小型チップアンテナ発表、京セラが5G基地局開発断念と報道、Yageoがシャークフィン+ホイップアンテナ発表 | トップページ | 天空のアトラス イタリア館の至宝@大阪中之島美術館を観てきた。ファルネーゼのアトラスはやはりすごい。正義の旗もよかった。しかし何と言ってもレオナルドダヴィンチのアトランティコ手稿が本当に鏡文字で感動した。 »



コメント