38 lines
		
	
	
		
			806 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			806 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine compress(c) | ||
|  | 
 | ||
|  |   parameter (NMAX=15*12000)             !Samples in iwave (180,000) | ||
|  |   complex c(0:NMAX-1) | ||
|  |   real xr(0:NMAX-1),xi(0:NMAX-1) | ||
|  | 
 | ||
|  |   xr=real(c) | ||
|  |   call wavestats(xr,NMAX,rms,pk,pwr_pk,pwr_ave) | ||
|  |   xr=xr/rms | ||
|  |   xi=aimag(c)/rms | ||
|  | 
 | ||
|  |   do i=0,NMAX-1 | ||
|  |      c(i)=rms*cmplx(h1(xr(i)),h1(xi(i))) | ||
|  |   enddo | ||
|  |    | ||
|  | !  par=pwr_pk/pwr_ave | ||
|  | !  write(*,1010) 5,rms,pk,pwr_pk,pwr_ave,par | ||
|  | !1010 format(i3,2f10.3,3f10.2) | ||
|  | !  call wavestats(xi,NMAX,rms,pk,pwr_pk,pwr_ave) | ||
|  | !  par=pwr_pk/pwr_ave | ||
|  | !  write(*,1010) 5,rms,pk,pwr_pk,pwr_ave,par | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine compress | ||
|  | 
 | ||
|  | subroutine wavestats(x,kz,rms,pk,pwr_pk,pwr_ave) | ||
|  | 
 | ||
|  |   real x(kz) | ||
|  | 
 | ||
|  |   sumsq=dot_product(x,x) | ||
|  |   rms=sqrt(sumsq/kz) | ||
|  |   pk=max(maxval(x),-minval(x)) | ||
|  |   pwr_pk=pk*pk | ||
|  |   pwr_ave=sumsq/kz | ||
|  |    | ||
|  |   return | ||
|  | end subroutine wavestats |