数値解析法及び演習 第十四回

バイナリデータの解析
  1. 今回用いるバイナリデータ
  2. バイナリデータの読み出し
  3. 今日の宿題

[1] 今回用いるバイナリデータ

今回は,以下の3枚の月探査データを用いる.

全て,緯度方向には-89.75度を始点として0.5度おきにピクセルの中心が並ぶ.よって緯度方向には360ピクセル存在する.経度方向には0.25度を始点として0.5度おきにピクセルの中心が並ぶ.よって経度方向には720ピクセル存在する.


練習問題1

ファイルのサイズをバイト単位で計算せよ.ls -l コマンドを実行してファイルサイズを確認せよ.

練習問題2

以下のコマンドを実行することにより(ファイル名は適宜変更すること),元のファイルよりjpgファイルを生成し,そのjpgファイルを開いて観察する.

    convert -depth 16 -size 720x360 -auto-level gray:FeO_720x360.raw FeO_720x360.jpg
    

[2]バイナリデータの読み出し

バイナリデータは,一定のデータ量をもつ塊(レコード)が一列に並んでいる状態でファイルに書き込まれている.以下のプログラムでは,書式なし(unformatted,バイナリデータのこと))のファイルをdirectモード(列の途中のレコードを直接読み出す)で読み出す指定がされている.また,INTEGER*2は, 2 バイト (16 ビット), -32,768 ~ 32,767 の範囲の符号付き整数を格納する変数を宣言する.

以下のプログラムを実行すると,FeO_720x360.rawとcrust-basalt_mac_720x360.rawからデータが読み出され,それぞれ配列 TCO(p,q) とCT(p,q)に格納される.さらに,FeO_720x360-02.rawという新規ファイルが開かれ,FeO_720x360.rawと同一の内容がバイナリで書き出される(つまりコピー).

  implicit none
  integer size1,size2,hdr_size,line,sample
  integer poi1,poi2,p,q
  integer*2 CT(360,720),TCO(360,720)

  hdr_size=0
  sample=720
  line=360

  size2=2  ! データ一つのサイズ(バイト)

  open(10,file='FeO_720x360.raw', & 
       form='unformatted',access='direct',recl=size2)
  open(20,file='./crust-basalt_mac_720x360.raw', & 
       form='unformatted',access='direct',recl=size2)
  open(30,file='./FeO_720x360-02.raw', &
       form='unformatted',access='direct',recl=size2)
  poi1=hdr_size+1
  poi2=hdr_size+1  
  do p=1,line 
     do q=1,sample 
        read(10,rec=poi1) TCO(p,q) !*** データの読み込み 
        read(20,rec=poi2) CT(p,q)  !*** データの読み込み 
        poi1=poi1+1 
        poi2=poi2+1 
     enddo
  enddo

  poi1=hdr_size+1  
  do p=1,line 
     do q=1,sample 
        write(30,rec=poi1) TCO(p,q)  !*** データの書き込み 
        poi1=poi1+1 
     enddo
  enddo

end program


練習問題3

プログラムを改造し,赤道(p=180もしくは181)における経度方向の地殻厚分布のデータをファイルに書き出し,gnuplotで観察せよ.

練習問題4

プログラムを改造して,各緯度で経度方向に地殻厚を平均し,緯度の関数としてデータを出力せよ.経度方向の平均地殻厚は,赤道付近と極付近でどのように差があるか考察せよ.

練習問題5

月の表面を構成している鉱物は主に斜長石(密度~2700 kg m-3),輝石(密度~3300 kg m-3),かんらん石(密度~3300 kg m-3),チタン鉄鉱(密度~4700 kg m-3)である.FeO は主に,輝石,かんらん石,チタン鉄鉱に,TiO2 は主にチタン鉄鉱に多く含まれており,それらの鉱物は相対的に密度が高い.このことから,月の岩石の密度と FeO 量,TiO2量の間には関係性が見出せるように思われる.ここでは次式で月面の密度を近似する.

密度(kg m-3) = 2772.6 + 29.3 FeO ( wt% ) + 5.85 Ti02 ( wt% )

この式と,FeOマップデータとTiO2マップデータから,月面の密度マップを作成して画像を観察せよ.計算した密度は上のプログラムを参考にしてファイルに出力すること.データにはwt%の数値が100倍されたものが格納されていることに注意すること.

練習問題6

上で算出した月面の密度と,地殻厚との相関係数を求めよ.経度については全て,緯度は45-135(p=91から270まで)のデータを用いて相関係数を求めること.FeOもしくはTiO2データが欠損している箇所(0が入っている)ピクセルは計算から除外すること.


今日の宿題 (1/28日まで)

練習問題6のプログラムと結果を送付すること.




日程表へ戻る <<