#author("2022-06-10T10:10:44+09:00","default:Miyashita","Miyashita") #author("2022-06-10T10:15:00+09:00","default:Miyashita","Miyashita") *Julia演習問題:フーリエ解析の基礎 [#ydc4cd76] ***問題 [#zfd69032] +matファイル "crf_wind.mat" を読み込み,一番初めの行成分 u[1,:] をプロットしなさい.~ u は風速データであり単位は [m/s],2次元目は時系列を表し,時間の増分は dt,単位は [s] である.~ #codeprettify(lang-julia){{ matdata = MAT.matopen() # v1.0.0 以降,正常にimportできないのでスキップ var_name = read(matdata,"var_name") }} +text データ "crf_wind.dat" を読み込み,一番初めの行成分 u[1,:] をプロットし,1 の mat ファイルのデータと比較しなさい.~ #codeprettify(lang-julia){{ f = open(filename,"r") readline(f) # or readlines(f) parse(Float64, stringdata[1]) }} +u[1,:] のスペクトルを計算し,対数軸でプロットしなさい.~ #codeprettify(lang-julia){{ F0 = FFTW.fft(dataorg,1) P = abs.(F0) plt = Plots.plot(..., xscale=:log10, yscale=:log10) }} +u[1,:] のフーリエ解析結果から高周波成分を取り除きなさい.また,ノイズを除去した u[1,:] を 1 または 2 の図に重ねてプロットしなさい.~ #codeprettify(lang-julia){{ abs.(freq) .> freq_cutoff FFTW.ifft(F0) }} ***データ [#mff0554e] -mat 形式ファイル~ #ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/python/crf_wind.mat,crf_wind.mat)~ -txt 形式ファイル #ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/python/crf_wind.dat,crf_wind.dat)~ 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) ***解答例(参考) [#m22bec5d] #ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/julia/noise_reduced.png,750x300) ↓↓↓の図,縦軸の単位間違えています.すいません.~ ↓↓↓の図,縦軸は powerではなくてフーリエ振幅 abs(F) です.すいません.~ #ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/julia/PSD.png)