program enshu06z implicit none integer :: seireki,tsuki,joutai,bangou,kosuu real,dimension(1800) :: kion1retsu real :: seki_souwa,seki_heikin,soukan real :: kion_a,kion_a_souwa,kion_a_heikin,kion_a2_souwa,kion_a2_heikin, & kion_a_bunsan,kion_a_hensa real :: kion_b,kion_b_souwa,kion_b_heikin,kion_b2_souwa,kion_b2_heikin, & kion_b_bunsan,kion_b_hensa integer :: lag,kosuu_souwa ! 入力データのあるファイルを開く open(10,file="matsuyama-kion2.txt",status="old",action="read") kosuu = 0 do ! データを読むループ read(10,'(2i5,i2.2,f6.1)',iostat=joutai)bangou,seireki,& tsuki,kion1retsu(bangou) if (joutai /= 0) exit kosuu = kosuu + 1 end do close(10) ! ファイルを閉じる do lag = 0,kosuu/2 ! ラグに関するループ seki_souwa = 0.0 kion_a_souwa = 0.0 kion_a2_souwa = 0.0 kion_b_souwa = 0.0 kion_b2_souwa = 0.0 kosuu_souwa = 0 do bangou = 1,kosuu-lag kion_a = kion1retsu(bangou) ! ラグ相関をとる2つの温度を kion_a と kion_b = kion1retsu(bangou+lag) ! kion_b と便宜的に呼ぶことにして、 seki_souwa & ! kion_a と kion_b の積の総和をとる = seki_souwa + kion_a*kion_b kion_a_souwa = kion_a_souwa + kion_a ! kion_a の総和をとる kion_a2_souwa = kion_a2_souwa + kion_a**2 ! kion_a の2乗の総和をとる kion_b_souwa = kion_b_souwa + kion_b ! kion_b の総和をとる kion_b2_souwa = kion_b2_souwa + kion_b**2 ! kion_b の総和をとる kosuu_souwa = kosuu_souwa + 1 ! 総和をとったデータの個数を調べる end do kion_a_heikin = kion_a_souwa/real(kosuu_souwa) ! kion_a の平均 kion_a2_heikin = kion_a2_souwa/real(kosuu_souwa) ! kion_a の2乗の平均 kion_a_bunsan = kion_a2_heikin-kion_a_heikin**2 ! kion_a の分散 kion_a_hensa = sqrt(kion_a_bunsan) ! kion_a の標準偏差 kion_b_heikin = kion_b_souwa/real(kosuu_souwa) ! kion_b の平均 kion_b2_heikin = kion_b2_souwa/real(kosuu_souwa) ! kion_b の2乗の平均 kion_b_bunsan = kion_b2_heikin-kion_b_heikin**2 ! kion_b の分散 kion_b_hensa = sqrt(kion_b_bunsan) ! kion_b の標準偏差 seki_heikin = seki_souwa/real(kosuu_souwa) ! kion_a と kion_b の積の平均 soukan = (seki_heikin-kion_a_heikin*kion_b_heikin) & /kion_a_hensa/kion_b_hensa ! kion_a と kion_b の相関係数 write(*,*)lag,soukan end do end program enshu06z