« あべのハルカス16階庭園から下を見る。大阪ステーションシティからも見る。 | トップページ | 高周波・RFニュース2026年9月25日 TechInsightsがiPhone 18 Pro/Max分解解説ウェビナー開催、iFixitがStream Fram分解・目と目の間にアンテナ、Mini-Circuitsが6GHz LNA動画解説、Samsung Galaxy S26 FE分解動画・上下基板結ぶRFはフレキなど »

2026年9月24日 (木)

Go言語の数値計算ライブラリGonumを使う(3)FFT(高速フーリエ変換)を行ってGonum plotでグラフにする。

GonumにはFFTもあるのはすぐわかったけれど、プロットとかどうする?と思ったらGonum plotがあった。

https://pkg.go.dev/gonum.org/v1/plot

じゃあこれを使おう。参考にするのはこちら。

 Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(3) 高速フーリエ変換(FFT)を実行する。FourierOptionsにMatlabとNumerical Recipesがあるのが意外。

コードはこちら。ちゃんと周波数シフトする関数があるのがありがたい。


package main

import (
    "math/cmplx"

    "gonum.org/v1/gonum/dsp/fourier"
    "gonum.org/v1/plot"
    "gonum.org/v1/plot/plotter"
    "gonum.org/v1/plot/plotutil"
    "gonum.org/v1/plot/vg"
)

func main() {

    const n = 256
    t := make([]float64, n)
    y := make([]complex128, n)

    for i := 0; i < n; i++ {
        t[i] = float64(i)
        y[i] = cmplx.Sin(complex(t[i], 0))
    }

    fft := fourier.NewCmplxFFT(n)
    coeff := fft.Coefficients(nil, y)

    p := plot.New()

    p.Title.Text = "FFT"
    p.X.Label.Text = "Freq"
    p.Y.Label.Text = "Real, Imag"

    realpts := make(plotter.XYs, n)
    imagpts := make(plotter.XYs, n)
    for i := 0; i < n; i++ {
        i = fft.ShiftIdx(i)
        realpts[i].X = fft.Freq(i)
        realpts[i].Y = real(coeff[i])
        imagpts[i].X = fft.Freq(i)
        imagpts[i].Y = imag(coeff[i])

    }
    err := plotutil.AddLines(p,
        "Real", realpts,
        "Imag", imagpts,
    )
    if err != nil {
        panic(err)
    }

    // Save the plot to a PNG file.
    if err := p.Save(10*vg.Inch, 6*vg.Inch, "fft.png"); err != nil {
        panic(err)
    }

}

実行結果

Fft

ちゃんとNumPyの例を再現できているようだ。ただデフォルトのプロットの品質がいまいちだなあ。まあとりあえずこのままいく。

 

« あべのハルカス16階庭園から下を見る。大阪ステーションシティからも見る。 | トップページ | 高周波・RFニュース2026年9月25日 TechInsightsがiPhone 18 Pro/Max分解解説ウェビナー開催、iFixitがStream Fram分解・目と目の間にアンテナ、Mini-Circuitsが6GHz LNA動画解説、Samsung Galaxy S26 FE分解動画・上下基板結ぶRFはフレキなど »

「パソコン・インターネット」カテゴリの記事

「学問・資格」カテゴリの記事

「日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« あべのハルカス16階庭園から下を見る。大阪ステーションシティからも見る。 | トップページ | 高周波・RFニュース2026年9月25日 TechInsightsがiPhone 18 Pro/Max分解解説ウェビナー開催、iFixitがStream Fram分解・目と目の間にアンテナ、Mini-Circuitsが6GHz LNA動画解説、Samsung Galaxy S26 FE分解動画・上下基板結ぶRFはフレキなど »

最近の記事

2026年10月
日 月 火 水 木 金 土
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近のコメント

無料ブログはココログ
フォト