!---------------------------------------------------------! !共有三个子程序: ! ! 1. sub_standard1(n,x,ki):处理一维序列; ! ! 2. sub_standard2(m,n,x,ki):处理二维序列,按行处理; ! ! 3. sub_standard3(m,n,x,ki):处理二维序列;按列处理; ! !要求输入的有: ! ! 1. x(n)或x(m,n),注意同时x(n)或x(m,n)被输出; ! ! 2. k1: === -1:原始场; ! ! === 0:距平场; ! ! === 1:标准化场; ! !---------------------------------------------------------! !=========================================================! subroutine sub_standard1(n,x,ki) ! implicit none ! integer,intent(in)::n,ki ! integer::i ! real,dimension(n),intent(InOut)::x ! real::ave,xigma ! real,intrinsic::sqrt ! ! if(ki == -1)then ! do i=1,n ! x(i)=x(i) ! enddo ! elseif(ki == 0)then ! ave=0.0 ! do i=1,n ! ave=ave+x(i)/real(n) ! enddo ! do i=1,n ! x(i)=x(i)-ave ! enddo ! elseif(ki == 1)then ! ave=0.0; xigma=0.0 ! do i=1,n ! ave=ave+x(i)/real(n) ! enddo ! do i=1,n ! xigma=xigma+(x(i)-ave)**2/real(n) ! enddo ! xigma=sqrt(xigma) ! do i=1,n ! x(i)=(x(i)-ave)/xigma ! enddo ! else ! write(*,*)'ki必须取-1,0或1.' ! endif ! end ! !=========================================================! !=========================================================! subroutine sub_standard2(m,n,x,ki) ! implicit none ! integer,intent(in)::m,n,ki ! integer::i,j ! real,dimension(m,n),intent(InOut)::x ! real::ave,xigma ! real,intrinsic::sqrt ! ! if(ki == -1)then ! do i=1,m; do j=1,n ! x(i,j)=x(i,j) ! enddo;enddo ! elseif(ki == 0)then ! do i=1,m ! ave=0.0 ! do j=1,n ! ave=ave+x(i,j)/float(n) ! enddo ! do j=1,n ! x(i,j)=x(i,j)-ave ! enddo ! enddo ! elseif(ki == 1)then ! do i=1,m ! ave=0.0; xigma=0.0 ! do j=1,n ! ave=ave+x(i,j)/float(n) ! enddo ! do j=1,n ! xigma=xigma+(x(i,j)-ave)**2/float(n) ! enddo ! xigma=sqrt(xigma) ! do j=1,n ! x(i,j)=(x(i,j)-ave)/xigma ! enddo ! enddo ! else ! write(*,*)'ki必须取-1,0或1.' ! endif ! end ! !=========================================================! !=========================================================! subroutine sub_standard3(m,n,x,ki) ! implicit none ! integer,intent(in)::m,n,ki ! integer::i,j ! real,dimension(m,n),intent(InOut)::x ! real::ave,xigma ! real,intrinsic::sqrt ! ! if(ki == -1)then ! do j=1,n; do i=1,m ! x(i,j)=x(i,j) ! enddo;enddo ! elseif(ki == 0)then ! do j=1,n ! ave=0.0 ! do i=1,m ! ave=ave+x(i,j)/float(m) ! enddo ! do i=1,m ! x(i,j)=x(i,j)-ave ! enddo ! enddo ! elseif(ki == 1)then ! do j=1,n ! ave=0.0; xigma=0.0 ! do i=1,m ! ave=ave+x(i,j)/float(m) ! enddo ! do i=1,m ! xigma=xigma+(x(i,j)-ave)**2/float(m) ! enddo ! xigma=sqrt(xigma) ! do i=1,m ! x(i,j)=(x(i,j)-ave)/xigma ! enddo ! enddo ! else ! write(*,*)'ki必须取-1,0或1.' ! endif ! end ! !=========================================================!