主题:如何把SEGY格式的数据去道头?
说明:
SEGY格式数据是这样存储的:3600字节+240字节+6000字节+240字节+6000字节+............+240字节+6000字节.其中240字节存放60个整型数字,6000字节存放1500个浮点数字,现在想把该文件读入,跳过3600字节,把后边的数字写入新的文件中,我这里有一个老方法,按4字节读入,从901开始定位,但是由于该数据文件巨大(近似2Gb),由于频繁读写,所以非常慢,请各位高手帮我找到一种快速存储的好办法.
CHARACTER*4 r
character*80 file1,file2
write(*,*) 'filename for input data'
read(*,'(a80)') file1
write(*,*) 'filenamne for output data'
read(*,'(a80)') file2
write(*,*) 'number of samples'
read(*,*) nt_sample
open(11,file=file1,access='direct',recl=4)
open(12,file=file2,access='direct',recl=4)
l=1
do j=1,900
read(11,rec=l)r
l=l+1
enddo
ii=0
111 CONTINUE
ii=ii+1
DO J=1,60+nt_sample
READ(11,rec=l,err=999)r
WRITE(12,rec=l-900)r
l=l+1
ENDDO
GOTO 111
999 CLOSE(11)
CLOSE(12)
END
[em10]
SEGY格式数据是这样存储的:3600字节+240字节+6000字节+240字节+6000字节+............+240字节+6000字节.其中240字节存放60个整型数字,6000字节存放1500个浮点数字,现在想把该文件读入,跳过3600字节,把后边的数字写入新的文件中,我这里有一个老方法,按4字节读入,从901开始定位,但是由于该数据文件巨大(近似2Gb),由于频繁读写,所以非常慢,请各位高手帮我找到一种快速存储的好办法.
CHARACTER*4 r
character*80 file1,file2
write(*,*) 'filename for input data'
read(*,'(a80)') file1
write(*,*) 'filenamne for output data'
read(*,'(a80)') file2
write(*,*) 'number of samples'
read(*,*) nt_sample
open(11,file=file1,access='direct',recl=4)
open(12,file=file2,access='direct',recl=4)
l=1
do j=1,900
read(11,rec=l)r
l=l+1
enddo
ii=0
111 CONTINUE
ii=ii+1
DO J=1,60+nt_sample
READ(11,rec=l,err=999)r
WRITE(12,rec=l-900)r
l=l+1
ENDDO
GOTO 111
999 CLOSE(11)
CLOSE(12)
END
[em10]