スペクトル解析実習

練習 1

答えのわかっているスペクトルを計算してみましょう (その 1).

サンプルプログラムを使ってスペクトルを計算してみましょう.

サンプルプログラム

サンプルプログラムはこちら.

ダウンロードは, 例えば wget を使うならば下のようにする.

$ wget http://itpass.scitec.kobe-u.ac.jp/~yot/itpass/2021_spectrum/programs/calcspe.f90

これは Fortran で書かれたスペクトル計算プログラムです. 中身は... .

FT Pack/ispack の説明はこちら.

コンパイルと実行

コンパイル

$ gfortran calcspe.f90 -o calcspe -L/usr/lib/x86_64-linux-gnu -lispack

実行

$ ./calcspe

出力ファイル

data_in_xy.txt          : (入力)[実空間] 入力 (実数)
data_out_xy_inv.txt     : (出力)[実空間] 入力をスペクトル変換後に逆変換したもの (複素数)
data_out_spe_comp.txt   : (出力)[波数空間] 入力をスペクトル変換したもの (複素数)
data_out_spe_powpha.txt : (出力)[波数空間] 入力をスペクトル変換したもの (パワー, 位相)

結果の確認

gnuplot を使って入出力を確認する.

(X サーバを立ち上げるのを忘れずに)

$ gnuplot

まずは入力データの分布

gnuplot> plot "data_in_xy.txt" w l

スペクトル変換して, 逆変換した分布も重ね描き (シンボル)

gnuplot> plot "data_in_xy.txt" w l, "data_out_xy_inv.txt" w p

ついでに, 逆変換した分布の虚部も重ね描き (シンボル)

gnuplot> plot "data_in_xy.txt" w l, "data_out_xy_inv.txt" w p, "data_out_xy_inv.txt" u 1:3 w p

複素数スペクトル

gnuplot> plot "data_out_spe_comp.txt" w l, "data_out_spe_comp.txt"u 1:3 w l

パワースペクトル

gnuplot> plot "data_out_spe_powpha.txt" w l

位相

gnuplot> plot "data_out_spe_powpha.txt" u 1:3 w l

メモ

  • ライブラリがどうとか
  • 波数の定義
  • 波数の範囲
    • ナイキスト周波数 (後回し)
  • 実数のスペクトル (複素数)
  • 振幅 (2 で割って平方根をとって 2 をかける), 位相 (atan)