Julia演習問題:フーリエ解析の基礎 †
問題 †
- matファイル "crf_wind.mat" を読み込み,一番初めの行成分 u[1,:] をプロットしなさい.
u は風速データであり単位は [m/s],2次元目は時系列を表し,時間の増分は dt,単位は [s] である.
matdata = MAT.matopen() # v1.0.0 以降,正常にimportできないのでスキップ
var_name = read(matdata,"var_name")
- text データ "crf_wind.dat" を読み込み,一番初めの行成分 u[1,:] をプロットし,1 の mat ファイルのデータと比較しなさい.
f = open(filename,"r")
readline(f) # or
readlines(f)
parse(Float64, stringdata[1])
- u[1,:] のスペクトルを計算し,対数軸でプロットしなさい.
F0 = FFTW.fft(dataorg,1)
P = abs.(F0)
plt = Plots.plot(..., xscale=:log10, yscale=:log10)
- u[1,:] のフーリエ解析結果から高周波成分を取り除きなさい.また,ノイズを除去した u[1,:] を 1 または 2 の図に重ねてプロットしなさい.
abs.(freq) .> freq_cutoff
FFTW.ifft(F0)
データ †
- mat 形式ファイル
- txt 形式ファイル
txt ファイルのフォーマットは以下の通り.
1行目: nt, nz
2行目: dt
3行目: z(1:nz)
4行目以降:
u(1,1) u(1,2) ... u(1,nt)
u(2,1) u(2,2) ... u(2,nt)
...
u(nz,1) ... u(nz,nt)
解答例(参考) †
↓↓↓の図,縦軸は powerではなくてフーリエ振幅 abs(F) です.すいません.