Clojure(JVMで動くLISP系)でJavaの数値計算ライブラリApache Commons Mathを使う(2) 補間を行う(Interpolate) リニア、Akimaスプラインなどいろいろある。JFreeChartで散布図とXYプロットを描く。
今回はこれの移植。
コードはこんな感じで。ChatGPTにいろいろ教えてもらいながらできた。
(ns mini.interpolation
(:import [org.apache.commons.math3.analysis.interpolation AkimaSplineInterpolator LinearInterpolator]
[org.jfree.data.xy XYSeriesCollection XYSeries]
[org.jfree.chart ChartFactory ChartPanel]
[org.jfree.chart.renderer.xy XYLineAndShapeRenderer]
[javax.swing JFrame]))
(def n 10)
(def m 50)
(def x (make-array Double/TYPE n))
(def y (make-array Double/TYPE n))
(def xval (make-array Double/TYPE m))
(def yline (make-array Double/TYPE m))
(def yakima (make-array Double/TYPE m))
(dotimes [i n]
(aset x i (/ (* 2 Math/PI i) (dec n)))
(aset y i (Math/sin (aget x i))))
;; ここで interpolate して関数を作る
(def linearFn (.interpolate (LinearInterpolator.) x y))
(def akimaFn (.interpolate (AkimaSplineInterpolator.) x y))
(doseq [i (range m)]
(aset xval i (/ (* 2 Math/PI i) (dec m)))
(aset yline i (.value linearFn (aget xval i)))
(aset yakima i (.value akimaFn (aget xval i))))
(defn create-dataset []
(let [series (XYSeries. "data")
series2 (XYSeries. "linear")
series3 (XYSeries. "akima")]
;; 元データ
(dotimes [i n]
(.add series (aget x i) (aget y i)))
;; 線形補間
(dotimes [i m]
(.add series2 (aget xval i) (aget yline i))
(.add series3 (aget xval i) (aget yakima i)))
(doto (XYSeriesCollection.)
(.addSeries series)
(.addSeries series2)
(.addSeries series3))))
(defn create-chart [dataset]
(ChartFactory/createXYLineChart
"Interpolation"
"x-axis"
"y-axis"
dataset))
(defn display-chart [chart]
(let [frame (JFrame. "Intterpolation")
plot (.getXYPlot chart)
renderer (XYLineAndShapeRenderer.)
chart-panel (ChartPanel. chart)]
(.setSeriesLinesVisible renderer 0 false) ; 点だけ表示
(.setSeriesShapesVisible renderer 1 false) ; 線だけ
(.setSeriesShapesVisible renderer 2 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月3日 Samsungが三つ折りスマホGalaxy Z TriFold発表、Nordicがヘルスケア向け新Bluetooth SoC発表、太陽誘電が2012-100μFの基板内蔵MLCC発表、TechInsightsがiPhone AirのほうがGalaxy S25 Edgeより2%コスト高と分析、など | トップページ | 高周波・RFニュース 2025年12月4日 Industrial Growth PartnersがMarki Microwaveを買収、MarvellがCelestial AIを買収、SiTimeがルネサスのタイミング事業買収か?という報道、光・電気通信の相互運用性ウェビナー開催 »
「パソコン・インターネット」カテゴリの記事
- Excelで1つのセルに複数の値を入れられるリストやセル内配列、ネストした配列という新機能が使えるようになっていた。例にあったデータ数が行ごとに違うときに使うのがよさそうなのでネイピア数の級数での計算をやってみた。(2026.10.07)
- JevのAPI互換のtev1(Ollama経由で利用)を使って、バンドパスフィルタの測定Sパラメータを読み込みスペックと比較して、単にG/NG判定だけでなく重大度や容認度をスコアとして出してくれるアプリrf_jev_judge.pyを作った。(2026.10.05)
- RF Weekly Digest 2026/9/28-10/4 (Codex(GPT-6 Astra)によるRF情報週刊まとめ)(2026.10.04)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2026年10月9日 IEEE Microwave Magazineにリコンフィギュラブルフロントエンド記事、Keysightがレイヤー1オートメーションスイッチ発表、GSMAがインドで3つのレポート発行、MinewのSOSボタンにNordicのSoC採用など(2026.10.09)
- 高周波・RFニュース 2026年10月8日 SkyworksがQorvoとの合併を完了、iFixitがApple Watch Series12とUltra4を分解・60GHzアンテナあり、TDKが2GHz対応車載インダクタ発表、KeysightがADS等にAIエージェント搭載、Mini-Circuitsのバトラーマトリクス解説(2026.10.08)
- 1980~2026年のノーベル物理学賞を素粒子・宇宙と物性・基礎に分けてプロット。昔は2つの分野は交互に獲る、という感じだったが去年まで5年連続物性・基礎だった。今年はアイスキューブニュートリノ観測所での成果ということで久しぶりに素粒子・宇宙。(2026.10.06)
- 高周波・RFニュース 2026年10月6日 QorvoがBAWベースのCバンドフロントエンドとXバンドフロントエンド発表、太陽誘電が低直流抵抗のメタル系パワーインダクタ発表、アンリツとキャンドックスシステムズが60GHz評価システム発表、QualcommとHuaweiが特許ライセンス契約(2026.10.06)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2026年10月9日 IEEE Microwave Magazineにリコンフィギュラブルフロントエンド記事、Keysightがレイヤー1オートメーションスイッチ発表、GSMAがインドで3つのレポート発行、MinewのSOSボタンにNordicのSoC採用など(2026.10.09)
- 高周波・RFニュース 2026年10月8日 SkyworksがQorvoとの合併を完了、iFixitがApple Watch Series12とUltra4を分解・60GHzアンテナあり、TDKが2GHz対応車載インダクタ発表、KeysightがADS等にAIエージェント搭載、Mini-Circuitsのバトラーマトリクス解説(2026.10.08)
- 1980~2026年のノーベル物理学賞を素粒子・宇宙と物性・基礎に分けてプロット。昔は2つの分野は交互に獲る、という感じだったが去年まで5年連続物性・基礎だった。今年はアイスキューブニュートリノ観測所での成果ということで久しぶりに素粒子・宇宙。(2026.10.06)
- 高周波・RFニュース 2026年10月6日 QorvoがBAWベースのCバンドフロントエンドとXバンドフロントエンド発表、太陽誘電が低直流抵抗のメタル系パワーインダクタ発表、アンリツとキャンドックスシステムズが60GHz評価システム発表、QualcommとHuaweiが特許ライセンス契約(2026.10.06)
« 高周波・RFニュース 2025年12月3日 Samsungが三つ折りスマホGalaxy Z TriFold発表、Nordicがヘルスケア向け新Bluetooth SoC発表、太陽誘電が2012-100μFの基板内蔵MLCC発表、TechInsightsがiPhone AirのほうがGalaxy S25 Edgeより2%コスト高と分析、など | トップページ | 高周波・RFニュース 2025年12月4日 Industrial Growth PartnersがMarki Microwaveを買収、MarvellがCelestial AIを買収、SiTimeがルネサスのタイミング事業買収か?という報道、光・電気通信の相互運用性ウェビナー開催 »



コメント