!---------------------------求序列的相关系数-----------------------------! !共有三个子程序: ! ! 1. sub_correlation(n,x,y,r):两个序列的相关系数; ! ! 输入:x(n),y(n); ! ! 输出:相关系数r; ! ! 2. sub_self_correlation(n,m,x,R):一个序列的后延自相关系数; ! ! 输入:x(n)和最大后延m; ! ! 输出:R(0:m); ! ! 3. sub_Two_bacdXG(n,m,x,y,R):两个序列的后延相关系数; ! ! 输入:x(n),y(n)和最大后延m; ! ! 输出:R(-m:m); ! !---------------------------------------- 程正泉 2000.5 -----------------! !========================================================================! subroutine sub_correlation(n,x,y,r) ! implicit none ! integer,intent(in)::n ! real,dimension(n),intent(in)::x,y ! real,intent(out)::r ! real,intrinsic::sqrt,float ! real::ave1,ave2,Var1,Var2,tmp ! integer::i ! ! ave1=0.0; ave2=0.0; Var1=0.0; Var2=0.0 ! do i=1,n ! ave1=ave1+x(i)/float(n) ! ave2=ave2+y(i)/float(n) ! enddo ! do i=1,n ! Var1=Var1+(x(i)-ave1)**2 ! Var2=Var2+(y(i)-ave2)**2 ! enddo ! tmp=0.0 ! do i=1,n ! tmp=tmp+(x(i)-ave1)*(y(i)-ave2) ! enddo ! r=tmp/sqrt(Var1*Var2) ! end ! !========================================================================! !========================================================================! subroutine sub_one_backxg(N,m,x,R) ! implicit none ! integer::N,m,Tao ! real,dimension(N)::x,R(0:m) ! real::r_temp ! ! do Tao=0,m ! call sub_correlation(N-Tao,x(1:N-Tao),x(1+Tao:N),R(Tao)) ! enddo ! end ! !========================================================================! !========================================================================! subroutine sub_Two_backXG(n,m,x,y,R) ! implicit none ! integer,intent(in)::n,m ! real,dimension(n),intent(in)::x,y ! real,dimension(-m:m),intent(out)::R ! integer::Tao,i1,i2 ! ! do Tao=-m,m ! if(Tao < 0)then ! call sub_correlation(n+Tao,x(1-Tao:n),y(1:n+Tao),R(Tao)) ! else ! call sub_correlation(n-Tao,x(1:n-Tao),y(1+Tao:n),R(Tao)) ! endif ! enddo ! end ! !========================================================================!