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