首页 > 代码库 > su命令2
su命令2
震数据处理软件-SU 之使用方法
第一章帮助工具 1. suhelp 显示可执行的程序和Shell脚本。2. suname 列出SU中各项命令的名字和简短描述,以及编码的地址。 3. sudoc 得到编码的DOC列表,列出SU中各条目的在线文档。 4. sufind 在自述文档中得到信息,使用给定的字符串查找SU命令。 5. Demo演示程序: l SU软件包中有一套Shell脚本演示程序,放在目录$CWPROOT/src/demos下。$CWPROOT/src/demos/README文件是这些演示程序的说明书。 l Making Data 演示程序显示使用susynlv程序制作合成记录炮集和共偏移距道集的基础内容。应当特别注意演示中好的标注风格。 l Filter/Sufilter 使用实际数据处理例子演示说明消除地滚波和初至。 l Deconvolution 使用supef和其它工具简单合成脉冲道集来实例说明去混响和脉冲反褶积处理。演示程序包括使用loops系统检验滤波参数影响的命令。 6. sukeyword 列出SU道头中的关键字 sukeyword –o 7. SU基本用法是通过创建Shell脚本来实现相应的数据处理。su/examples目录下有很多这样的例子。 第二章核心SU程序 一、从磁带上读写数据下面的程序对于地球物理应用中特定的数据输入和输出任务是有用的,对内部SU数据格式也一样。 BHEDTOPAR – 把二进制磁带HEaDer文件转换成PAR文件格式 DT1TOSU – 把Sensors & Software X.dtl GPR的地质雷达数据转成SU格式 SEGDREAD – 读取SEG-D磁带 SEGYCLEAN - zero out unassigned portion of header SEGYREAD – 读SEG-Y磁带 SEGYHDRS – 为segywrite构造SEG-Y文件的ascii和二进制头文件SEGYWRITE –写SEG-Y磁带 SETBHED - 设置一个SEGY二进制磁带HEaDer文件的道头字 SUADDHEAD – 为裸道加上头文件并设置tracl和ns道头字 SUSTRIP – 从道中去掉SEGY头文件 SUPASTE – 为已存在的数据加上已存在的SEGY头文件 下面的程序可以用于一般的数据输入,输出和数据格式转换,在磁带读写中也可以使用。 A2B – 把ascii float转成二进制 B2A -把二进制float转成ascii FTNSTRIP – 把Fortran的float转成C格式的float H2B - convert 8 bit hexidecimal oats to binary RECAST – 改变数据类型(从一种数据类型转到另一种) TRANSP – 转置一个n1×n2个元素的矩阵 1. SEGY格式和SU数据格式 SEGY数据格式包括三个部分。第一个部分是3200字节的EBCDIC卡片,包括40个卡片(等于每行包含80个字符的40行文本),用来磁带。第二个部分时400个字节的二进制头文件,含有磁带卷内容的信息。SEGY格式的第三个部分是真正的地震道数据。每道有240个字节的道头文件。接下来,是32位的IBM浮点型数据(在IBM Form GA 22-6821中定义)。注意,IBM格式和现代IBM PC上所用的IEEE格式是不同的。 SU数据格式是基于SEGY格式的道部分。SEGY道和SU道的主要不同在于SU格式的道数据是浮点型,是和你运行SU程序的计算机上的浮点格式一致的。SU数据只含有SEGY的道部分!SU格式中不保存EBCDIC和二进制卷头,所以无法在任何SU程序中直接使用SEGY文件。 为了把SEGY数据转成SU程序所用的格式,需要使用segyread。 2. SEGYREAD 将SEGY数据读入SU 程序segyread用来把数据从SEGY格式转成SU格式。 当读取SEGY磁带或数据文件时,你需要知道你所使用的机器的byte-order(endian)。SGI,SUN,IBM RS6000使用的是所谓“big-endian”或high-byte IEEE格式,而基于Intel和Dec芯片的系统用的是“little-endian”或low-byte。 在big-endian机器上运行segyread的典型方式如下所示: segyread tape=/dev/rmt0 verbose=1 endian=1 > data.su 更经常使用的是如下的格式来为big-endian平台读入数据: segyread tape=/dev/rmt0 verbose=1 endian=1 | segyclean >data.su 在SEGY道头里有可选的道头字(字节181-240)。这些道头字的使用没有标准,所以很多人按自己的需要来填写。SU也不例外。有几个SU图形程序使用的参数存储在这些道头字里。程序segyclean会把可选道头字里容易让SU图形程序产生误解的参数清零。 糟糕的是有很多号称SEGY格式,但却不符合SEG的标准SEGY格式。最常见的情况就是为了方便,道部分是用IEEE格式。这种IEEE格式数据可用下面的命令来读取: segyread tape=/dev/rmt0 verbose=1 endian=1 conv=0 | segyclean > data.su 这里conv=0是告诉程序不进行IBM型到float浮点型的转换。 还有DOS SEGY格式,基本与前面相同,除了他的道和头都是用little-endian格式写的。如果用big-endian机器来读的话用下面的命令: segyread tape=/dev/rmt0 verbose=1 endian=0 conv=0 | segyclean > data.su 注意:endian=0是设置交换字节(所有的字节,头和数据都是交换格式)。在little-endian机器上,程序是: segyread tape=/dev/rmt0 verbose=1 endian=1 conv=0 | segyclean > data.su endian=1会阻止交换字节。 不管哪种情况,如果我们的磁盘文件名为“filename”,那么应该使用“tape=filename”参数。 3. SEGYWRITE写SEGY格式的磁带或磁盘文件 与segyread相对应的命令是segywrite。这个程序可以将SEGY格式按多种不同的方式把数据写到磁带或磁盘文件。该程序可用于把数据写成商业软件可以使用的形式。在学习如何使用segywrite命令之前,有几个需要的准备步骤必须要讨论一下。 4. SEGYHDRS – 为segywrite准备ascii和二进制头文件。 要写一个符合SEG数字磁带标准的SEGY格式,你需要提供ASCII和二进制的卷头文件,在SEGY磁带或文件里会变成EBCDIC和二进制的卷头文件。也就是segywrite创建文件时需要有header部分和binary部分。 如果你没有binary和header文件,你必须用程序sgyhdrs(创建SEG Y文件)来创建它们。命令: segyhdrs < data.su 会在当前工作目录下写header和binary文件。举例来说:利用suplane来做一个文件然后对它使用segyhdrs: suplane > data.su segyhdrs < data.su 你会看到binary和header文件出现在当前工作目录下。 这个命令带有选项,允许你设置binary header fields的值。这些字可以用如下的方式看到: sukeyword jobid 文件header是一个ASCII文件,可以用正常的文本编辑器来编辑。可以放任意内容,只有格式是每行80个字符的40行。Segywrite会自动把segyhdrs产生的缺省头文件转成下面的格式: C This tape was made at the C C Center for Wave Phenomena C Colorado School of Mines C Golden, CO, 80401 C ... C C 5. BHEDTOPAR,SETBHED – 编辑二进制头文件 要编辑二进制头文件,首先要转成ASCII格式。程序bhedtopar允许把binary文件写成“parfile”的格式: bhedtopar < binary outpar=binary.par 可以编辑产生的ASCII码文件“binary.par”进行修改,然后通过setbhed来重新读入: setbhed bfile=binay par=binary.par 也可以单独设置头文件字。例如: setbhed bfile=binary par=binary.par lino=3 使用了binary.par的内容,但是lino单独设为3。 最后,可以通过下面的命令来写磁带: segywrite tape=/dev/rmtx verbose=1 < data.su 注意header文件和binary文件是在当前目录下的。你也可以使用你自己的文件名。Segywrite的选项bfile=和hfile=用来输入你指定的文件名。 二、数据格式转换 经常需要把来自其它系统或不同格式的输入数据进行转换。在SU里有很多工具和方法处理这些问题。 下面的程序就是用来处理这种转换的问题: A2B – 把ascii浮点型转换成二进制 B2A - 把二进制转换成ascii浮点型 FTNSTRIP – 把Fortran floats转成C-style floats FTNUNSTRIP – 把C-style floats转换成Fortran-style floats H2B – 把8 bit hexidecimal floats to binary RECAST – 改变数据类型(从一种数据类型转到另一种) TRANSP – 转置一个n1×n2的矩阵 1. A2B和B2A - ASCII to Binary, Binary to ASCII 在所有的数据格式中,ASCII是最常传送的(也是最耗空间的)。不管你使用什么系统,都可能需要把ASCII转来或转去。而且,因为文本编辑器支持ASCII,因此经常可能要用文本编辑器来做数据输入或编辑。 这种格式大都是多行格式,用空格或tab来隔开。要转换一个例如5行的数据到二进制,键入: a2b < data.ascii n1=5 > data.binary 相反的操作就是: b2a < data.binary n1=5 > data.ascii 2. FTNSTRIP – 把Fortran数据转换成C语言格式 Fortran在地震数据处理中是比较流行的语言,因此常常需要处理Fortran创建或处理过的数据。Fortan的二进制数据是被beginning-of-record和end-of-record分隔符隔开的。而C程序创建的二进制数据没有这些分隔符。要在C程序中使用Fortran数据需要去掉这些Fortran标签,通过: ftnstrip < fortdata > cdata 3. RECAST – 改变数据类型(从一种数据类型转到另一种) float 浮点型, double 双精度, int (带符号)整型, char 字符, uchar 无符号字符, short 短整型, long 长整型, ulong 无符号长整型 例如,把整型转换成浮点型: recast < data.ints in=int out=float > data.floats 4. TRANSP – 转置一个n1×n2个元素的矩阵 5. Farith - 对二进制数据作简单的算术运算 很多时候需要对文件做算术操作,或者在两个二进制数据文件之间。程序farith用来完成许多类似的任务. Farith对单个文件的操作包括: Scaling value(缩放数值) Polarity reversal(极性反转) Signum function(正负号函数) absolute value (绝对值) exponential(取指数) logarithm(取对数) square root (开平方根) square(取平方) inverse (punctuated), (取道数,带小数点) inverse of square (punctuated), (取平方倒数,带小数点) inverse of square root (punctuated) (取平方根倒数,带小数点) 二元操作(对两个文件的操作)包括 addition (加法) subtraction (减法) multiplication (乘法) division (除法) Cartesian product笛卡尔乘积:从给定的集合X和Y中构成的所有(x,y)元素对集合 地震操作()包括 slowness perturbation sloth perturbation 使用farith的实例: farith in=data.binary op=pinv out=data.out.bin farith in=data1.binary in2=data2.binary op=add > data.out2.bin 三、道头操作 SU数据格式继承了SEGY的道头。如果你的数据不是SEGY,而是从其它格式转换得到的,就需要设置一些道头关键字,以使得数据与SU程序协调一致。 这一节涉及的问题(issues)包括: SUADDHEAD – 在裸数据中写道头,设置道头字 SUSTRIP – 把SU格式数据中的道头切除并存放在文件中,形成裸数据 SUPASTE –把道头文件再粘贴回来,把裸数据添加道头文件生成SU格式的数据文件 SUKEYWORD – 文件“segy.h”中SU的关键字指南 SURANGE – 获得非零道头输入值的范围(最大值和最小值) SUSHW – 设置一个或多个道头字,利用道数、取余数(mod)或整除(integer divide)计算道头字的值,或从一个文件中输入道头字的值 SUCHW – 利用一个或两个已存在的道头字来计算新的道头字 SUGETHW – 获取SU数据中道头字的值 SUEDIT – 检查Segy磁盘文件并编辑道头 SUXEDIT – 检查Segy磁盘文件并编辑道头 SUSWAPBYTES – 把SU数据字节顺序从big endian 交换为 little endian,或者是相反。 1. suaddhead – 给二进制数据加SU道头 如果我们的数据由二进制C浮点型文件组成(例如每道1024个采样点),那么下面命令系列将产生SU数据文件“data.su”: suaddhead < data.bin ns=1024 > data.su 对于其它类型(如整型)使用命令recast: recast < data.ints in=int out=float | suaddhead ns=1024 > data.su 如果数据首先是从Fortran转换而来的整型,那么处理流程为: ftnstrip < data.fortran | recast in=int out=float | suaddhead ns=1024 > data.su 2. sustrip – 将SU道头与SU数据分离 命令suaddhead的逆操作就是sustrip.下面的命令行将去掉文件SU道头,并把SU道头存到“data.headers”中,形成裸数据data.bin: sustrip < data.su head=data.headers > data.bin 3. supaste– 将SU道头与SU数据分离 对二进制数据完成处理后,我们可能需要把道头粘贴回去,这时用命令supaste。下面的命令行将把文件“data.headers”中的道头内容粘贴回数据中: supaste < data.bin head=data.headers > data.su 4. sukeyword – 查看SU关键字 sukeyword -o 将显示SU关键字的列表,SU道头中确定有80多个关键字,大多时候只使用其中相对很小的一部分。 5. surange – 获得道头字值的范围 指定数据中道头字值得范围,对于道头字而言是非常有用的信息。键入: surange < data.su 将返回所有非零SU道头字值得范围。 请注意,对于损坏的数据来说,很多道头字中可能出现非常奇怪的值,检测这种问题也是surange命令的主要用法之一。 6. sugethw – 获取SU道头字的值 surange命令可以查看整个数据道头字的范围(最大值和最小值)。但是,我们往往需要按一定的顺序一道一道地查看道头字的值。命令sugethw就是这样的一个工具。例如: sugethw < data.su key=keyword1,keyword2,... | more 下面给出一个具体的例子: suplane | sugethw key=tracl,tracr,offset,dt,ns | more sugethw对于道头字的排列顺序和个数没有要求,但至少要指定一个道头字。 如果需要把道头字输出成二进制的文件,可用下面的命令: suplane | sugethw key=tracl,tracr,offset,dt,ns output=binary > file.bin 对于观测系统,你可以使用下面的命令输出到文件中去: suplane | sugethw key=tracl,tracr,offset,dt,ns output=geom > hdrfile 7. sushw – 在SU数据中设定道头字的值 命令sushw可根据各种需要来设置道头字的值,该命令可以一次让用户设置一个或多个道头字的值。使用sushw对道头字指定一个固定的值,如我们给数据设定采样间隔: sushw < data.su key=dt a=2000 > data.out.su sushw指定的可选参数有: key= 要修改的关键字 a= 第一道的值 b= 组内增加量 c= 组间增加量 d= 道偏移量 j= 组内元素个数 这些额外的可选参数可用来做更加复杂的操作。这样做是非常重要的,因为道头字的值与道数据的位置常常有直接的关系。道头字的值用下面的公式计算: i = itr + d val(key) = a + b * (i % j) + c * (i / j) 这里itr是道号(注意:第一道是itr=0,而非1),%表示取余数,/表示除法。例如,我们可以设定头五道的道头字sx=6400,第二个5道中sx=6300,依次类推,每5道递减100: sushw < data.su key=sx a=6400 c=-100 j=5 > data.new.su 另一个例子,我们设置每5道的offset的值为200:200:1000,命令格式为: sushw < data.su key=offset a=200 b=200 j=5 > data.out.su 我们可以只使用一个sushw命令就可以完成上面3个操作: sushw < data.su key=dt,sx,offset a=2000,6400,200 b=0,0,200 c=0,-100,0 j=0,5,5 > newdata.su 下面是一个实际的例子,tracl从1开始,每隔100道增加1;cdp从1开始,每道增加1,一直增加到100,然后重复从1开始;offset同tracl,只是从0开始;sx同cdp;sy同offset;ns全部设为495;dt全部设为1000: sushw < filename.su key=tracl,cdp,offset,sx,sy,ns,dt a=1,1,0,1,0,495,1000 b=0,1,0,1,0,0,0 c=1,0,1,0,1,0,0 j=100,100,100,100,100,0,0 > filename_new.su 8. suchw – 在SU数据中改变(或计算)道头字的值 有些道头字(如cdp)可以从已有的道头字计算而来,程序suchw就提供了这种功能。 参数有:key1 输出的关键字 key2 输入的关键字 key3 输入的关键字 a 偏移量 b key2关键字的倍数 c key3关键字的倍数 d overall scales 我们可以使用两个道头字的值(key2 和key3),利用下面的方程式计算第三个道头字的值(key1): val(key1) = (a + b * val(key2) + c * val(key3)) / d 例如: suchw<indata key1=gx,cdp key2=offset,gx key3=sx,sx b=1,1 c=1,1 d=1,2 >outdata 9. suedit和suxedit – 编辑SU数据中道头字的值 最后,你可能想检查或改变某个道头,suedit和suxedit命令就可以提供这个功能。允许交互浏览和编辑道头字。 例如: suplane > data.su suedit data.su 将得到下面的结果:
suedit 和suxedit交互使用的命令可以通过在提示符后键入问号(?)显示。例如:
该程序让用户将数据采样值按表格形式浏览到数据,或者浏览或改变单个道头字的值。 程序suxedit和suedit类似,但含有X-Windows图形绘图功能用于道数据绘图。 四、编辑SU数据 一旦SU格式的数据读入和道头设置正确后,常常要对数据进行操作和编辑。SU提供的数据处理和编辑的命令有: SUWIND – 根据关键字开时窗 SUSORT – 基于segy道头关键字进行道分选 SURAMP – 从道起点到道终点进行线性斜坡化(Linearly taper)至零值 SUTAPER – 对一个数据窗进行斜坡化(taper)至零值 SUNULL – 产生空道(都为零值) SUZERO – 在一时间窗内数据充零 SUKILL – 地震道充零 SUNUTE – 根据关键道头字确定的距曲线的距离,去除用户指定的多边形曲线上边或下边的值 SUVELENGTH – 调整变长度地震道到相同长度地震道 SUVCAT – 将一个数据附加到另一个数据(一道接一道进行) 1. suwind – 用关键字选定一定时窗地震道 非常常见的操作就是我们时常需要浏览或处理地震数据中的一小块数据。suwind命令使得我们可以根据大量的参数信息设置窗口来选定感兴趣的数据。 通过道头字来设定数据窗口的大小 suwind最简单的用法就是,通过用户设定道头关键字的最小和最大值来选定数据: key=tracl 设置窗口的道头字(see segy.h) min=LONG_MIN 数据关键道头字的最小值 max=LONG_MAX 数据关键道头字的最大值 例如,用道数作关键字对命令suplane产生的数据进行窗口大小设置: suplane | suwind key=tracl min=5 max=10 | sugethw key=tracl | more 对于一个大的数据体,应该使用计数(count)参数,而不是最大值。如果直接设定最大值(max),命令suwind将查询全部数据后,再选择在最小值和最大值之间的道集,这是因为程序认为道的标志(trace labeling)可能多次出现。例如,可以比较下面的两个命令的结果: suplane ntr=100000 | suwind key=tracl min=5 max=10 | sugethw tracl | more suplane ntr=100000 | suwind key=tracl min=5 count=5 | sugethw tracl | more 更复杂的窗口大小选择如下(例如,使用分数,decimating data): j=1 每个数据的第j道不选… s=0 以s为基数(如果((key - s)%j) == 0) 下面的例子用suplane生成的数据,每两道抽取一道(即抽取道2、4、6…): suplane | suwind key=tracl j=2 | sugethw key=tracl | more 或者每隔2道抽取1道,基数为1(即抽取道1、3、5…): suplane | suwind key=tracl j=2 s=1 | sugethw key=tracl | more 也可以用suwind接受或拒绝某些地震道: reject=none 按指定的关键字跳过的地震道 accept=none 用指定的关键字选择地震道 例如下面的命令所示,地震道中的第3、8、9道将不显示: suplane | suwind key=tracl reject=3,8,9 | sugethw key=tracl | more 参数accept选项有点特殊,它表示接收这些道,即使这些道被拒绝过。例如: suplane | suwind key=tracl reject=3,8,9 accept=8 | sugethw key=tracl | more 如果你只想接收列表中的道,这时需要设置参数“max=0”,下列所示只显示出第8道: suplane | suwind key=tracl accept=8 max=0 | sugethw key=tracl | more 计数(count)参数覆盖接收(accept)参数,所以如果你想真正无条件接受道,就不能指定计数(count)参数。 选取时间窗口(Time gating) 有关窗口的第二个问题就是时间窗的设定。垂直时间窗(time gating)的选项为: tmin = 0.0 选取最小时间 tmax = (from header) 选取最大时间 itmin = 0 选取最小时间采样 itmax = (from header) 选取最大时间采样 nt = itmax-itmin+1 时间采样点数 设置的结果要么是选取最小时间采样和选取最大时间采样(itmin和itmax),要么选取最小时间和选取最大时间(tmin和tmax),这样就将产生一个最接近采样的时窗。 2. susort– 根据segy道头字分选道 susort命令利用Unix系统sort命令,通过道头关键字对地震道进行分选。 例如,根据两个关键字(cdp和offset)分选数据(数值按升序),可用下面的命令: susort <indata.su >outdata.su cdp offset 如果offset关键字按降序,cdp关键字按升序进行分选,可用下面的命令: susort <indata.su >outdata.su cdp -offset 3. suramp和sutaper– 数据斜坡化(Tapering) 很多地震处理算法因为数据的突变边界而显示假象,在数据边界对振幅进行斜坡化(tapering),就是压制这种假象的最容易的方法。在SU中,我们可以使用sutaper命令对数据边界进行斜坡化。 例如,对每5道数据从头到尾进行斜坡化: sutaper <diskfile >stdout ntaper=5 suramp可以平滑从起始道和(或)末道。例如,斜坡化从0到tmin=0.05s,然后再向下从tmax=1.15s到末道: suramp <diskfile tmin=.05 tmax=1.15 >stdout 4. sukill、suzero、sunull和sumute– 数据充零 对有噪声的道、位于数据边界的道进行充零是有益的。或者是产生一些空道,在绘图时最为联系数据集中间的分割标志。 sukill – 道充零 对一批地震道充零键入: sukill <stdin >stdout min=MIN_TRACE count=COUNT 这里参数count是要充零的总道数,参数min是要充零的这些道中的最小道号。 sunull – 产生空道数据 有时需要生成道值为零的地震数据块。下面的命令产生共有NTR道,时间采样数为NT的地震数据: sunull nt=NT ntr=NTR <stdin >stdout min=MIN_TRACE count=COUNT suzero – 在一段时间窗内对数据充零 suzero itmin=MIN_TIME_SAMPLE itmax=MAX_TIME_SAMPLE <indata.su > outdata.su sumute – 数据去除 要进行高精度的压制操作,可用命令sumute对SU数据进行处理。 sumute <indata.su >outdata.su key=KEYWORD xmute=x1,x2,x3,... tmute=t1,t2,t3,... 下面用suplane生成数据,然后做去除处理与原始生成数据比较: suplane | suxwigb & suplane | sumute key=tracl xmute=1,10,12 tmute=.06,.1,.11 | suxwigb & 去除根据xmute=和tmute=参数确定的多边形曲线内每一个初至。 5. suvcat和cat – 数据合并 有两种方法可以将一种数据附加到另一个上(合并)。第一种使用Unix命令cat,简单的将第二个文件的数据放到第一个文件中去。 cat data1.su data2.su > data3.su 另外,可能需要对地震道重编号: cat data1.su data2.su | sushw key=tracl a=1 > data3.su 第二种是将第二个数据集中的每一道垂直的附加到第一个数据集中每一道的末尾。这就需要使用suvcat命令: suvcat data1.su data2.su > data3.su 在这个例子中,就不需要修改道头字。 6. suvlength – 调整可变长度道到相同采样点数 有时数据中每道含有不同的采样点数。下面我们对用suplane命令生成的数据,用命令suvlength处理的道相同的采样点数: suplane nt=64 > data1.su suplane nt=32 > data2.su cat data1.su data2.su > data3.su 对于上面合并生成的数据data3.su,如果想用SU程序处理该数据文件将会失败,因为大多说SU程序要求数据块含有相同的采样点数。使用命令suvlength可以解决该问题: suvlength ns=64 < data3.su > data4.su suxwigb < data4.su title="Test of suvlength" & 这将使所有的道含有相同的长度。 五、SU数据常用操作 1. suaddnoise – 对地震道加噪声 下面是两个使用suaddnoise命令的例子: suplane | suxwigb title="no noise" & suplane | suaddnoise | suxwigb title="noise added" & suplane | suaddnoise sn=2 | suxwigb title="noise added" & 2. sugain – su数据增益 增益命令含有多个选项: scaling the data, 数据比例伸缩 multiplying the data by a power of time, 数据与时间幂相乘 taking the power of the data, 数据取幂 automatic gain control, 自动增益控制 trapping noise spiked traces, 含噪声脉冲的地震道陷波滤波 clipping specified amplitudes or quantiles, 指定的振幅或分量裁减限制 balancing traces by quantile clip, rms value, or mean, 根据等分法、均方根值或均值道均衡 biasing or debiasing the data. 偏离或去偏离数据 操作优先等级如下面的方程所示:out(t) = scale * BAL{CLIP[AGC{[t^tpow * exp(epow * t) * ( in(t)-bias )]^gpow}]} 实例:suplane | suaddnoise > data.su suxwigb < data.su title="Ungained Data" & sugain < data.su scale=5.0 | suxwigb title="Scaled data" & sugain < data.su agc=1 wagc=.01 | suxwigb title="AGC=1 WAGC=.01 sec & sugain < data.su agc=1 wagc=.2 | suxwigb title="AGC=1 WAGC=.1 sec & sugain < data.su pbal=1 | suxwigb title="traces balanced by rms" & sugain < data.su qbal=1 | suxwigb title="traces balanced by quantile" & sugain < data.su mbal=1 | suxwigb title="traces balanced by mean" & sugain < data.su tpow=2 | suxwigb title="t squared factor applied" & sugain < data.su tpow=.5 | suxwigb title="square root t factor applied" & 3. suop – su数据的一元操作 suop对SU数据进行一元函数运算和操作,主要功能包括: absolute value, 取绝对值 signed square root, 带符号开方 square, 平方 signed square, 带符号位平方 signum function, 正负号函数 exponential, 指数 natural logarithm, 取自然对数 signed common logarithm, 带符号位常用对数 cosine, 余弦函数 sine, 正弦函数 tangent, 正切函数 hyperbolic cosine, 双曲余弦函数 hyperbolic sine, 双曲正弦函数 hyperbolic tangent, 双曲正切函数 divide trace by Max. Value, 地震道数据用最大值除 express trace values in decibels: 20 * slog10 (data) 地震道数据用分贝表示 negate values, 数据取反 pass only positive values, 只选正值 pass only negative values. 只选负值 例子:suplane | suaddnoise > data.su suop < data.su op=abs | suxwigb title="absolute value" & suop < data.su op=ssqrt | suxwigb title="signed square root" & suop < data.su op=sqr | suxwigb title="signed square" & 4. suop2 – su数据的二元操作 程序suop2用来对两个SU数据进行操作,该命令支持的计算有: difference, 相减 sum, 相加 product, 相乘 quotient, 相除 前面的选项假定每个SU数据道采样数相同,后面4个选项假定第二个文件只有一道。 difference of a panel and a single trace, 一块数据和某一道数据相减 sum of a panel and a single trace, 一块数据和某一道数据相加 product of a panel and a single trace, 一块数据和某一道数据相乘 quotient of a panel and a single trace. 一块数据和某一道数据相除 并且有8个对等shell文本命令做这些操作: susum file1 file2 == suop2 file1 file2 op=sum sudiff file1 file2 == suop2 file1 file2 op=diff suprod file1 file2 == suop2 file1 file2 op=prod suquo file1 file2 == suop2 file1 file2 op=quo For: panel "op" trace operations: suptsum file1 file2 == suop2 file1 file2 op=ptsum suptdiff file1 file2 == suop2 file1 file2 op=ptdiff suptprod file1 file2 == suop2 file1 file2 op=ptprod suptquo file1 file2 == suop2 file1 file2 op=ptquo 所有这些操作都是调用suop2进行计算。 例子: suplane > junk1.su suxwigb < junk1.su | suxwigb title="Data without noise" & suplane | suaddnoise > junk2.su suxwigb < junk2.su | suxwigb title="Data with noise added" & suop2 junk2.su junk1.su op=diff | suxwigb title="difference" & 注意,文件名应出现在操作参数”op=”之前。 六、SU信号处理 1. Fourier变换 在SU软件包中有1D和2D Fourier变换程序。2D变换包括地震F-K变换,假定输入数据的块空间是时间的,第二维是空间的;对非地震K1-K2变换,假定输入是纯二维空间(x1, x2)数据。 1D Fourier变换 SUFFT – 从实数时间道变换到复数频率道(正变换) SUIFFT – 从复数频率道变换到实数时间道(逆变换) SUAMP – 输出振幅、相位、实部和虚部(从frequency, x) SUSPECFX – 地震数据Fourier频谱分析(时间T到频率F) 例如: suplane | suxwigb title="Original Data" & suplane | sufft | suifft | sushw key=d1,dt a=0,4000 | suxwigb & 结果与输入完全一样,除了地震道结果中有更多的采样点,因为变换时要补零。 要浏览sufft程序输出的振幅谱和相位谱、实部和虚部,操作如下: suplane | sufft | suamp mode=amp | suxwigb title="amplitude" & suplane | sufft | suamp mode=phase | suxwigb title="phases" & suplane | sufft | suamp mode=real | suxwigb title="real" & suplane | sufft | suamp mode=imag | suxwigb title="imaginary" & SU数据格式可以存储复数数据的实部和虚部。键入下面的命令可以查看格式的道头设置位置: suplane | sufft | surange
显示出道头字trid=11,显示出FFT变换输出数据是如何排列的. 当然,绝大多数时候,我们只想快速看看一个地震道或一块地震数据的振幅谱,这时可以用suspecfx命令: suplane | suspecfx | suximage title="F-X Amplitude Spectrum" & 这将直接显示输入SU数据每道的振幅谱。 2D Fourier变换 如果数据实际上为(时间、空间)坐标数据,那么2D Fourier变换输出的就是F-K(频率、波数)域数据。如果考虑两个空间坐标(x1,x2)数据,进行2D Fourier变换,这时输出就是(k1,k2)2D波数域数据。 SUSPECFK – 数据的F-K域Fourier频谱分析 SUSPECK1K2 - (x1,x2)数据2D(K1,K2)Fourier频谱分析 例子: suplane | suspecfk | suximage title="F-K Amplitude Spectrum" & suplane | suspeck1k2 | suximage title="K1-K2 Amplitude Spectrum" & 2. Hilbert变换、道属性和时间-频率域 SUHILB – Hilbert变换 SUATTRIBUTES – 道属性(瞬时振幅、相位和频率) SUGABOR – 通过Gabor变换(类似多参数滤波分析),输出地震数据时间-频率结果 进行Hilbert变换的例子如下: suplane | suhilb | suxwigb title="Hilbert Transform" & 查看suattributes命令生成道属性,将相应的显示出瞬时振幅、相位和频率: suvibro | suxgraph title="Vibroseis sweep" & suvibro | suattributes mode=amp | suxgraph title="Inst. amplitude" & suvibro | suattributes mode=phase unwrap=1.0 | suxgraph title="Inst. phase" & suvibro | suattributes mode=freq | suxgraph title="Inst. frequency" & 使用sugabor命令可以进行时间-频率域分析: suvibro | sugabor | suximage title="time frequency plot" & 3. Radon变换 – Tau P滤波 Radon变换或“Tau_P”变换时压制多次波和进行数据改造的有效方法,涉及的程序有: SUTAUP - 正向和逆向(forwared and inverse)T-X和F-K全局倾斜叠加 SUHARLAN - 信号噪声分离,应用Harlan可逆线性变换方法(1984) SURADON - 计算正或逆Radon变换,或用抛物线Radon变换估计并去除多次波 SUINTERP - 使用自动同相轴拾取方法进行道插值 相关使用方法,请参阅:$CWPROOT/src/demos/Tau P下的例子4. 1D滤波操作 地震处理中很大一部分工作可以称为滤波。在SU中1D滤波应用程序可以进行简单的滤波操作,和更复杂的反褶积和子波整形处理。这些操作成为1D,是因为这些操作处理数据是一道一道进行的。 SU包含的命令有: SUFILTER - 应用零相位正弦平方斜坡滤波 SUBFILT - 应用Butterworth带通滤波 SUACOR - 自相关 SUCONV, SUXCOR - 利用用户提供的滤波器进行褶积和相关 SUPEF - Wiener预测误差滤波 SUSHAPE - Wiener整形滤波 SURESAMP - 时间域重采样 SUFRAC - 采用一般的时间微分、积分、相位移动,注:时间域数据 SUMEDIAN - 沿着用户确定的多边形曲线,根据道头字指定的与曲线的距离,进行中值滤波 SUTVBAND - 时变带通滤波(正弦平方滤波) 1)sufilter - 应用零相位正弦平方斜坡滤波sufiletr提供了可用于一般的带通、带陷、低通、高通和陷波滤波,使用sufilter进行滤波的例子如下: suplane | sufilter f=10,20,30,60 amps=0,1,1,0 | suxwigb title="10,20,30,60 hz bandpass" & suplane | sufilter f=10,20,30,60 amps=1,0,0,1 | suxwigb title="10,20,30,60 hz bandreject" & suplane | sufilter f=10,20,30,60 amps=1,1,0,0 | suxwigb title="10,20 hz lowpass" & suplane | sufilter f=50,60,70 amps=1,0,1 | suxwigb title="60 hz notch" & 2)subfilt - 应用Butterworth带通滤波 subfilt与程序sufilter工程相似,它使用Butterworth滤波器进行滤波: suplane | subfilt fstoplo=10 fpasslo=20 fpasshi=30 fstophi=60 | suxwigb title="10,20,30,60 hz bandpass” & 3)suconv, suxcor - 使用用户设计的滤波器进行褶积和相关 褶积和互相关可分别使用suconv和suxcor命令实现。滤波器可以通过在命令行输入向量、或者通过含有某个道的SU格式文件提供。 下面是一个可控联系扫描信号进行相关处理的例子。通过联合使用suvibro、suplane和suconv,产生类似可控连续震动的数据。生成可控连续震动的命令如下: suvibro > junk.vib.su suplane | suconv sufile=junk.vib.su > plane.vib.su 使用surange命令查看junk.vib.su数据的信息: surange < junk.vib.su
显示可控震源扫描信号有2500个采样点,因此做下面所示的相关分析: suxcor < plane.vib.su sufile=junk.vib.su | suwind itmin=2500 itmax=2563 | sushw key=delrt a=0.0 > data.su参数itmin=sweeplength和itmax=sweeplength+nsout,参数nsout是期望输出的采样点数,最后使用sushw设置道延迟为0。选择参数itmin=sweeplength将保证数据从正确的值起始。 4)supef - Wiener预测误差滤波 5)sushape - Wiener整形滤波 5. 2D滤波操作 二维空间(k1,k2)和(F,K)域滤波有助于改变数据的倾角信息。下面的这些程序初步的提供了一套波数(K)域和频率-波数(F,K)域滤波操作命令: SUKFILTER - radially symmetric K-domain, sin^2-tapered, polygonal filter SUK1K2FILTER - symmetric box-like K-domain filter defined by the cartesian product of two sin^2-tapered polygonal filters defined in k1 and k2 SUKFRAC - apply FRACtional powers of i-k to data, with phase shift SUDIPFILT - DIP-or better-SLOPE Filter in f-k domain 6. suresamp - 数据时间域重采样 七、SU数据绘图及显示 Seismic Unix软件包包括一部分(普通C语言类型的浮点格式和SU格式)数据绘图的图形工具,均可在X-Windows环境下,在屏幕上显示或生成PostScript格式的图形文件。SU中能够绘制的图形类型有: contour plots, 等值线绘图 gray or colorscale image plots, 灰度或彩色图像 wiggle trace plots, 地震道波形图 line or symbol graphs, 测线和符号绘图 movies, 电影动画 3D cube plots (PostScript only). 3D立体图 1. X-Windows中绘制一般浮点型数据在X-Windows环境下,用于绘制浮点型数据(没有SU道头)的程序有: XCONTOUR - 调用矢量绘图来绘制f(x1,x2)的等值线图 XIMAGE - 绘制灰度或彩色图像 XWIGB - 绘制变面积地震道波形图 XGRAPH - 绘制曲线 XMOVIE - 绘制动画电影 例子:suplane | sustrip > data.bin xcontour < data.bin n1=64 n2=32 title="contour" & ximage < data.bin n1=64 n2=32 title="image" & xwigb < data.bin n1=64 n2=32 title="wiggle trace" & xmovie < data.bin n1=64 n2=32 title="movie" & 上面命令中n1=64,n2=32表示数据大小为:46*32。 xgraph < data.b n=5 完成上述操作后,要消去窗口,可以点击窗口然后键入“q”即可退出。 2. X-Windows中SU格式数据绘图 相应,在X-Windows环境下,用于绘制SU格式数据的程序有: SUXCONTOUR - 调用矢量绘图来绘制f(x1,x2)的等值线图 SUXIMAGE - 绘制灰度或彩色图像 SUXWIGB - 绘制变面积地震道波形图 SUXGRAPH - 绘制曲线 SUXMOVIE - 绘制动画电影 SUXMAX - SU数据每道最大值、最小值和最大绝对值X-Windwos图 例子:suplane | suxcontour title="contour" & suplane | suximage title="image" & suplane | suxwigb title="wiggle trace" & suplane | suxgraph title="graph" & suplane | suxmovie title="movie" & suplane | suxmax title="max" & 绘制地震道时,使用真偏移距,需要使用“key=”关键字参数。例如: suplane | suchw key1=offset key2=tracl a=0 b=100 | suxwigb key=offset & 用suxmovie命令制作电影动画: suplane > junk1.su suplane | suaddnoise sn=20 >> junk1.su suplane | suaddnoise sn=15 >> junk1.su suplane | suaddnoise sn=10 >> junk1.su suplane | suaddnoise sn=5 >> junk1.su suplane | suaddnoise sn=3 >> junk1.su suplane | suaddnoise sn=2 >> junk1.su suplane | suaddnoise sn=1 >> junk1.su suxmovie < junk1.su n2=32 title="frame=%g" loop=1 &这里参数n2=32表示数据每幅有32道。“%g”用来在图形标题上显示出图形的桢数,参数“loop=1”表示用连续循环方式运行电影。 要加快或减慢电影的放映速度,只需要在图形的右下角点击并拖动窗口来放大或缩小图像。按在鼠标最右边的键一次将暂停,按第二次将重新放映。 3. 一般浮点型数据的PostScript绘图 可用于一般浮点型数据的PostScript绘图的命令有: PSCONTOUR - PostScript CONTOURing of a two-dimensional function f(x1,x2), PSIMAGE - PostScript IMAGE plot of a uniformly-sampled function f(x1,x2), PSCUBE - PostScript image plot of a data CUBE, PSGRAPH - PostScript GRAPHer Graphs n pairs of (x,y) coordinates, PSMOVIE - PostScript MOVIE plot of a uniformly-sampled function f(x1,x2,x3), PSWIGB - PostScript WIGgle-trace plot of f(x1,x2) via Bitmap, 用位图绘制地震道 PSWIGP - PSWIGP - PostScript WIGgle-trace plot of f(x1,x2) via Polygons. 用多边形绘制地震道 例子:suplane | sustrip > data.bin pscontour < data.bin n1=64 n2=32 title="contour" > data1.eps psimage < data.bin n1=64 n2=32 title="image" > data2.eps pscube < data.bin n1=64 n2=32 title="cube plot" > data4.eps pswigb < data.bin n1=64 n2=32 title="bitmap wiggle trace" > data3.eps pswigp < data.bin n1=64 n2=32 title="wiggle trace" > data4.eps psmovie < data.bin n1=64 n2=32 title="movie" > data5.eps a2b < data.ascii n1=2 > data.bin n=5 psgraph < data.bin n=5 > data6.eps 4. SU数据的PostScript绘图 相应,可用于SU数据的PostScript绘图命令有: SUPSCONTOUR - PostScript CONTOUR plot of an SU data set SUPSIMAGE - PostScript IMAGE plot of an SU data set SUPSCUBE - PostScript CUBE plot of an SU data set SUPSGRAPH - PostScript GRAPH plot of an SU data set SUPSWIGB - PostScript Bit-mapped WIGgle plot of an SU data set SUPSWIGP - PostScript Polygon-filled WIGgle plot of an SU data set SUPSMAX - PostScript of the MAX, min, or absolute max value on each trace of a SU data set 例子:suplane > junk.su supscontour < junk.su title="contour" > data1.eps supsimage < junk.su title="image" label1="sec" label2="trace number" > data2.eps supscube < junk.su title="cube plot" > data4.eps supswigb < junk.su title="bitmap wiggle trace" > data3.eps supswigp < junk.su title="wiggle trace" > data4.eps supsmovie < junk.su title="movie" > data5.eps supsmax < junk.su title="max" > data5.eps 5. 其它PostScript绘图工具 PSBBOX - change BoundingBOX of existing PostScript file 改变PostScript文件四周的框架 PSMERGE - MERGE PostScript files 合并PostScript文件 MERGE2 - MERGE2 PostScript figures onto one page 合并两幅图像 MERGE4 - MERGE4 figures onto one page 合并四幅图像 PSLABEL - output PostScript file consisting of a single TEXT string on a specified background.(Use with psmerge to label plots.) PSMANAGER - printer MANAGER for HP 4MV and HP 5Si Mx Laserjet PostScript printing PSEPSI - add an EPSI formatted preview bitmap to an EPS file 例子: suplane > junk.su suplane | sufilter > junk1.su supswigb < junk.su title="Wiggle trace" label1="sec" label2="trace number" > junk1.eps supsimage < junk.su title="Image Plot" label1="sec" label2="trace number" > junk2.eps supscontour < junk.su title="Contour Plot" label1="sec" label2="trace number" > junk3.eps supswigb < junk1.su title="Filtered" label1="sec" label2="trace number" > junk4.eps 合并两幅图到一个文件中去: merge2 junk1.eps junk2.eps > junk.m2.eps 合并4幅图到一个文件中去: merge2 junk1.eps junk2.eps junk3.eps junk4.eps > junk.m4.eps 6. 道拾取工具(Trace Picking Utilities) X-Windows地震道、图像和等值线绘图程序中都具有如下特点:将光标放在图形上某点,然后键入字母“s”,那么该点的坐标就保存在内存中;当键入字母“q”时,这些值就存储到用户指定的一个文件“mpicks”中。 SU中另外还有两个程序用于拾取: XPICKER - X wiggle-trace plot of f(x1,x2) via Bitmap with PICKing SUXPICKER - X-windows WIGgle plot PICKER of an SU data set SUPICKAMP - pick amplitudes within user de_ned and resampled window |