地震记录簿数值模拟的褶积模型法
- 格式:doc
- 大小:220.50 KB
- 文档页数:21
地震盲源反褶积方法及其应用摘要:反褶积是地震信号处理中的重要环节之一。
本文采用的地震盲源反褶积方法将独立分量分析这一信号处理工具引入到地震信号处理中,可以实现地震子波和反射系数的同时估计,消除传统反褶积方法受假设条件的限制。
实际资料的处理结果表明,方法能较好地适应非最小相位系统,得到原始反射系数的最优估计,算法稳定,收敛速度快,是提高地震资料分辨率的有效手段。
关键词:反射系数非最小相位盲源反褶积独立分量分析1 引言反褶积技术是地震信号处理中提高分辨率的主要手段。
传统的反褶积方法对地震子波和反射系数序列做了一定的限制,即假设反射系数是白噪序列,地震子波是最小相位的,从而用地震记录的自相关代替地震子波的自相关来估计子波特性,进而进行子波压缩处理。
基于这些假设条件的反褶积方法在实际应用中取得了一定的效果,但是往往不符合地下介质的实际情况。
近几十年来,很多学者把注意力集中在反射系数序列的随机性上[1],反射系数序列的非高斯性使反射系数和地震子波在一定条件下具备独立分量分析褶积混合模型的特点,从而可以利用独立分量分析进行盲源反褶积处理[2]。
与传统反褶积方法相比,盲源反褶积方法弱化了对子波和反射系数的先验条件,克服了传统反褶积方法对最小相位子波和高斯白噪反射系数假设的依赖[3]。
2 地震盲源反褶积方法的基本理论和实现过程作为信号非高斯程度的度量,负熵是任意概率密度函数和具有同样方差的高斯型概率密度函数间的KL散度,负熵值越大表示信号距离高斯分布越远。
3 实际资料应用从图2到图4实际资料处理的对比看,盲源反褶积处理有效提高了地震记录的分辨率,微构造信息更加清晰,同时较好的保持了地震资料的振幅相对关系。
从剖面窗口部位的频谱分析看,相较于传统反褶积方法,盲反褶积能更有效的拓宽地震资料的频带。
4 结论从盲源反褶积方法的实际应用看,方法能够有效的拓宽地震资料的频带,突出细节部位的地质信息,在地震资料处理中有很好的应用前景。
地表一致性反褶积方法浅析及应用佚名【摘要】提高地震资料分辨率的重要手段是采用反褶积技术。
反褶积方法很多,如子波反褶积、脉冲反褶积和预测反褶积等。
这些方法各有优缺点,在高分辨率资料处理中应用受到许多条件制约,不能有效地提高资料的分辨率,其效果不能满足解释人员的要求。
作地表一致性反褶积需要对记录进行频谱分析和频谱分解,同时要设计反褶积算子,然后在共炮点域和共接收点域分两步对资料进行褶积。
这种方法能够展宽频谱,压缩地震子波,并能校正地震信号的相位谱,输出零相位子波,较大程度地提高地震资料的分辨率。
该方法在高邮西部地区地震资料处理中取得较好效果。
【期刊名称】《内蒙古石油化工》【年(卷),期】2012(000)010【总页数】4页(P126-129)【关键词】地表一致性反褶积;提高信躁比;设计反褶积算子【正文语种】中文【中图分类】P631.4高分辨率地震勘探技术是一个系统工程。
在高分辨率地震资料处理的系统工程中,关键问题是新的噪音衰减技术、反褶积方法、动静校正方法和叠加成像方法四大环节和贯穿各种新技术于一体的处理流程。
反褶积方法是地震资料处理过程中的重要手段。
资料分辨率主要取决于地震波的频谱,它包括两方面的含义,即频带宽度和相位一致性。
高分辨率的地震资料应当有宽频带和零相位的频谱,改善地震波频谱的有效手段之一是反褶积技术[1]。
资料处理中应用的反褶积方法很多,每一种反褶积方法都是建立在一定假设条件下的地震褶积模型之上。
所以,反褶积的效果大都取决于所采用的褶积模型与实际地震记录的符合程度。
地表一致性反褶积是基于经过噪音衰减、速度滤波和真振幅恢复后的地震记录,对记录进行反褶积的频谱分析、反褶积频谱分解、反褶积算子设计以及对记录进行反褶积算子的应用来完成。
处理过程中在共炮点域和共接收点域进行两次反褶积,能展宽频谱,压缩地震子波,校正地震信号的相位谱,输出零相位子波,较大程度地提高地震资料分辨率[2]。
1.1 反褶积应用公式经过噪音衰减、速度滤波和真振幅恢复后的地震记录可以表示为[3]:式中,S(t,x)为偏移距为X的地震道,r(t)为反射系数序列,T 1(t,τ)为时变传输和多次波效应,M (t,x)为与偏移距有关的时差效应,SL(t)为排列损失和球面发散损失,T2(t,τ)为时变吸收或非弹性衰减效应,R 1(t,x)为与偏移距有关的浅层混响记录系统响应,W(t)为震源子波,N(t)为噪音。
本科生实验报告实验课程数值模型模拟学院名称地球物理学院专业名称勘测技术与工程学生姓名学生学号指导教师熊高君实验地点5417实验成绩2015年5月成都理工大学《地震数值模拟》实验报告实验报告一、实验题目:地震记录数值模拟的褶积模型法二、实验目的:掌握褶积模型基本理论、实现方法与程序编制,由褶积模型初步分析地震信号的分辨率问题。
三、原理公式1、褶积原理地震勘探的震源往往是带宽很宽的脉冲,在地下传播、反射、绕射到测线,传播经过中高频衰减,能量被吸收。
吸收过程可以看成滤波的过程,滤波可以用褶积完成。
在滤波中,反射系数与震源强弱关联,吸收作用与子波关联。
最简单的地震记录数值模拟,可以看成反射系数与子波的褶积。
通常,反射系数是脉冲,子波取雷克子波。
(1)雷克子波:wave(t)=cos(2ft)*(2)反射系数:(3)褶积公式:数值模拟地震记录trace(t): trace(t) =rflct(t)*wave(t);反射系数的参数由 z 变成了 t,怎么实现?在简单水平层介质,分垂直和非垂直入射两种实现,分别如图 1 和图 2 所示。
图1 图21)垂直入射:t=2h/v;2)非垂直入射:t=2、褶积方法(1)离散化(数值化)计算机数值模拟要求首先必须针对连续信号离散化处理。
反射系数在空间模型中存在,不同深度反射系数不同,是深度的函数。
子波是在时间记录上一延续定时间的信号,是时间的概念。
在离散化时,通过深度采样完成反射系数的离散化,通过时间采样完成子波的离散化。
如果记录是 Trace(t),则记录是时间的函数,以时间采样离散化。
时间采样间距以Δt 表示,深度采样间距以Δz 表示。
在做多道的数值模拟时,还有横向Δx 的概念,横向采样间隔以Δx 表示。
离散化的实现:t=It×Δt;x=Ix×Δx;z=Iz×Δz;或:It=t/Δt; Ix=x/Δx; Iz=z/Δz(2)离散序列的褶积trace(It)=四、实验内容1、垂直入射地震记录数值模拟的褶积模型;2、非垂直入射地震记录数值模拟的褶积模型。
包 . 1 球 , 物理字 , 2 报 3 , . 2 二根据经验和具体情况给定一个 P 可自动选取 P 值 . 1 5 , 如 p一 l . 或区间 [ 5 0 ] 5 上某个实数 p 值。
. 2 l 上某个子区间由大量的实际计算例子表明在区间【 . . : 。
以了优选准则为 0 犷一 1 州 ! / 11 州 1 越大越好】 . 对 P < 2 当 ly 一。
时。
一 c o 为避免此种情况发生 , 2 , , . 0 【 5 . 如用 06 8优选法 1 . , 均分优选法等 , 被选区间可为区间 . 1 2 ] 上优选夕就足可 , , , , , 1 要进行如下数值处理 : }y 6 , } , 户一 , , 夕一2 当 }夕当 }y 】蕊, } > ‘ 6 。
. 这里 s 为当小的实适正数表 2 及其相应的图 2一图 4 是 L 。
, 模反褶积与最小平方反褶积对各相位信号处理结 s 相似度 (, 比较最 L _ 樟斤褶积 ._ 相位性质表 2 、 . _ _ _ , _ } 茹故囚士长及小相位零相位混相位—卉, “ 2 0 { — }一一・ , 、 l 平卞津二二二二二二二二兰一 6 6 2 2一“ , ”, ” ・一一 } 一一二一一一卜一卜。
, , , ‘ ・・} l } l { ” o “ ! “ ”3 7 0 ・ l a ( f ( } —‘ ‘ ’ l 。
, 33‘ } } —— { z 二 { U ・ - ・” ・9 5 6 0 ‘ ・ 6 0 干 1 1 , l : l [ . !二翩 . l 。
1 !. , , … . h l , , , 卜1… 扭. l 1 … , . 1 匕 { 图 ( a 3 c eeon 结果 ; 零相位子波 ; ( b 合成地震道 ; ( 已知反射系数 ; ( d D e L , 模反褶积结果 ; (f L , 模滤波因子 . (, 期 p 李凤林等 : L 模反褶积及其在地震勘探中的应用 * ( 作 ( f 汗皿, , , ; } 1 . ‘ 韭土 } ! } _ 11 止 . 1 l } . ! 一 . l 1 : } } 二以日 { } , 一 , 上‘ 图 ( 混合相位子波; a ( b 合成地震道 ; ., e ( Z 模反褶积结果 ; c4 f ( 已知反射系数 ; L , 模滤波因子 econ 结果 ; (d D . a ( 人工剖面 ; , , ( b L 模反褶积处理剖面 . , , 模反褶积结果也比最小平方法好这是因果之比较从中看出即使对小相位信号 . , 为反射序列分布并非高斯分布图 5 是 L 模反褶积对 1 道混合相位人工地震道处 0 b . 。
勘探地震学数据处理中的三种反褶积技术于平,赵震宇(吉林大学地球探测科学与技术学院,吉林长春 130026)摘要:在地震数据处理中,反褶积是用来提高分辨率的必要手段,但同时往往会降低资料的信噪比。
当地震资料不满足最小相位和白噪声约束条件时,常规的反褶积方法也将不再适用。
从这两个问题出发,混合相位未知脉冲最小平方反褶积、多分辨率地震信号反褶积、神经网络子波反褶积等三种改进的方法分别运用多次迭代、二进小波变换和神经网络技术,对常规方法的不足予以改善。
关键词:反褶积;混合相位;多分辨率;神经网络中图分类号:P631.4 文献标识码:A 文章编号:10045589(2002)02018103收稿日期:20011029作者简介:于平(1978),女,辽宁省盖县人,硕士生,主要从事勘探地震学方面的研究1在勘探地震学的数据处理系统中,反褶积是一项重要技术。
它是广义的地震反演的一部分;严格的反演是要提取地震参数,而反褶积企图提取反射系数,实际只能压缩子波。
提高纵向分辨率是数据处理的一个主要任务,也是反褶积方法的主要用途[1]。
但在实施过程中往往达不到理想效果,这其中包含有以下几点原因:(1)各种常规反褶积方法都必须有一定的假设条件,而在实际工作中有些条件又是不可实现的,限制了反褶积方法的应用。
所以,研究反褶积的一个努力方向就是要发展和应用其假设,尽可能接近实际的反褶积方法。
(2)反射地震记录的褶积模型不可靠。
褶积模型中的地震子波是大地滤波器的脉冲响应,然而,大地滤波的作用十分复杂,所以,为了发展提高分辨率的反滤波方法,应努力研究大地滤波的机制。
(3)反褶积在提高纵向分辨率的同时,往往会降低信噪比,提高记录噪声水平,给信号的提取带来困难。
只要能发展一种方法,使之在强噪声下提取弱信号,这样就可以在一定程度上缓解信噪比降低带来的困难[2]。
(4)各种反褶积方法的前提大多是地震子波已知,而实际恰恰相反。
因此,反滤波发展的另一个方向是子波提取技术[3]。
本科生实验陈述之答禄夫天创作实验课程数值模型模拟学院名称地球物理学院专业名称勘测技术与工程学生姓名学生学号指导教师熊高君实验地点 5417 实验成绩2015年5月成都理工大学《地震数值模拟》实验陈述实验陈述一、实验题目:地震记录数值模拟的褶积模型法二、实验目的:掌握褶积模型基本理论、实现方法与程序编制,由褶积模型初步分析地震信号的分辨率问题。
三、原理公式1、褶积原理地震勘探的震源往往是带宽很宽的脉冲,在地下传播、反射、绕射到测线,传播经过中高频衰减,能量被吸收。
吸收过程可以看成滤波的过程,滤波可以用褶积完成。
在滤波中,反射系数与震源强弱关联,吸收作用与子波关联。
最简单的地震记录数值模拟,可以看成反射系数与子波的褶积。
通常,反射系数是脉冲,子波取雷克子波。
(1)雷克子波:wave(t)=cos(2ft)*(2)反射系数:(3)褶积公式:数值模拟地震记录trace(t): trace(t) =rflct(t)*wave(t);反射系数的参数由 z 酿成了 t,怎么实现?在简单水平层介质,分垂直和非垂直入射两种实现,分别如图 1 和图 2 所示。
图1 图21)垂直入射:t=2h/v;2)非垂直入射:t=2、褶积方法(1)离散化(数值化)计算机数值模拟要求首先必须针对连续信号离散化处理。
反射系数在空间模型中存在,分歧深度反射系数分歧,是深度的函数。
子波是在时间记录上一延续定时间的信号,是时间的概念。
在离散化时,通过深度采样完成反射系数的离散化,通过时间采样完成子波的离散化。
如果记录是 Trace(t),则记录是时间的函数,以时间采样离散化。
时间采样间距以Δt 暗示,深度采样间距以Δz 暗示。
在做多道的数值模拟时,还有横向Δx 的概念,横向采样间隔以Δx 暗示。
离散化的实现:t=It×Δt;x=Ix×Δx;z=Iz×Δz;或:It=t/Δt; Ix=x/Δx; Iz=z/Δz(2)离散序列的褶积trace(It)=四、实验内容1、垂直入射地震记录数值模拟的褶积模型;2、非垂直入射地震记录数值模拟的褶积模型。
第二章反褶积反褶积是借助压缩基本地震子波来改善时间分辨率的一种处理过程。
为搞清这一过程要求综合研究正演问题,即必须首先研究记录的地震道的积木式分段单元。
地层是由不同类型岩性的岩层组成的,每种岩石类型都有地球物理学家所可利用的某种物理特性。
至于地震勘探,则根据波传播速度和岩层密度确定岩层。
密度与速度的乘积称之为地震波阻抗,地震资料分析期望的最终成果就是地震波阻抗剖面。
我们有在井中直接检测岩层速度和密度的方法,这种方法能向我们提供地震波阻抗与深度的关系。
在地面上沿测线记录到的地震反射波就是由于两地层之间的波阻抗差引起的。
记录到的反射记录可通过反射率与震源子波的褶积来模拟。
下面分别对褶积模型、各种反滤波进行介绍,并给出应用实例。
2.1 褶积模型我们从图1给出的一个实际声测井记录入手,该声测井曲线是层速度与深度的关系图。
实际的速度测量是以 2英尺的采样间隔在1000-5400英尺之间的深度段内完成的。
借助简单的斜坡把速度函数外延至地面。
该声测井记录显示出明显突变和强低频趋势特征,这两者构成了总的速度变化。
实际上我们通常用CMP道集作速度分析进行估算的就是这种低频趋势。
对声测井曲线可通过人工分段提取其速度趋势,其结果可列表如下:由声测井记录确定的层速度趋势表1地层序号层速度(ft/s)深度范围(ft)1 21000 1000—20002 19000 ※2000—22503 18750 2250—25004 12650 2500—37755 19650 3775—5400※实际上该层速度是逐渐减小的。
我们所做的就是形成一组恒定层速度的层组。
把测井曲线进行这种分段多少有点类似于地质家对假想的地下模型所做的分层。
地质家是根据岩性分层,而我们根据声测井曲线的分段性质提取的分层则是以速度差为依据的。
下面对表1中所确定的地层的岩性分类:地层序号岩性1 2 3 灰岩泥质灰岩(泥岩含量逐渐增加) 泥质灰岩4 5 泥岩白云岩在声测井曲线的低频趋势上附加有高频分量。
本科生实验报告实验课程数值模型模拟学院名称地球物理学院专业名称勘测技术与工程学生学生学号指导教师熊高君实验地点5417实验成绩2015年5月理工大学《地震数值模拟》实验报告实验报告一、实验题目:地震记录数值模拟的褶积模型法二、实验目的:掌握褶积模型基本理论、实现方法与程序编制,由褶积模型初步分析地震信号的分辨率问题。
三、原理公式1、褶积原理地震勘探的震源往往是带宽很宽的脉冲,在地下传播、反射、绕射到测线,传播经过中高频衰减,能量被吸收。
吸收过程可以看成滤波的过程,滤波可以用褶积完成。
在滤波中,反射系数与震源强弱关联,吸收作用与子波关联。
最简单的地震记录数值模拟,可以看成反射系数与子波的褶积。
通常,反射系数是脉冲,子波取雷克子波。
(1)雷克子波:wave(t)=cos(2ft)*(2)反射系数:(3)褶积公式:数值模拟地震记录trace(t): trace(t) =rflct(t)*wave(t);反射系数的参数由 z 变成了 t,怎么实现?在简单水平层介质,分垂直和非垂直入射两种实现,分别如图 1 和图 2 所示。
图1 图21)垂直入射:t=2h/v;2)非垂直入射:t=2、褶积方法(1)离散化(数值化)计算机数值模拟要求首先必须针对连续信号离散化处理。
反射系数在空间模型中存在,不同深度反射系数不同,是深度的函数。
子波是在时间记录上一延续定时间的信号,是时间的概念。
在离散化时,通过深度采样完成反射系数的离散化,通过时间采样完成子波的离散化。
如果记录是 Trace(t),则记录是时间的函数,以时间采样离散化。
时间采样间距以Δt 表示,深度采样间距以Δz 表示。
在做多道的数值模拟时,还有横向Δx 的概念,横向采样间隔以Δx 表示。
离散化的实现:t=It×Δt;x=Ix×Δx;z=Iz×Δz;或:It=t/Δt; Ix=x/Δx; Iz=z/Δz(2)离散序列的褶积trace(It)=四、实验容1、垂直入射地震记录数值模拟的褶积模型;2、非垂直入射地震记录数值模拟的褶积模型。
五、方法路线1、根据垂直入射褶积模型理论算法,填充程序(附后)的下划线部分,使程序完整,调试程序,算出结果,用“Fimage”显示软件显示褶积结果;2、根据非零偏移距算法,编制非零偏移距褶积模型程序,算出结果,用“Fimage”显示软件显示褶积结果。
(参考垂直入射褶积模型理论算法和程序,子波与反射层不变);3、变换子波的主频:fm(10hz到300hz围),重复1和2;4、变换子波的长度:Nw(80ms到160ms围),重复1和2;5、改变反射层深度:h(800m到1600m围),重复1和2;6、改变介质速度:v(2000m/s到7000m/s 围),重复1和2。
六、实验结果1、结果显示1)垂直入射图3—1 Nw=32,h=1000,v=3000,fm=100地震记录数值模拟的褶积模型(左)和子波(右)图3—2 Nw=32,h=1000,v=3000,fm=200地震记录数值模拟的褶积模型(左)和子波(右)图3—3 Nw=32,h=1000,v=3000,fm=300地震记录数值模拟的褶积模型(左)和子波(右)图3—4 h=1000,v=3000,fm=25,Nw=20地震记录数值模拟的褶积模型(左)和子波(右)图3—5 h=1000,v=3000,fm=25,Nw=30地震记录数值模拟的褶积模型(左)和子波(右)图3—6 h=1000,v=3000,fm=25,Nw=40地震记录数值模拟的褶积模型(左)和子波(右)图3—7 Nw=32,v=3000,fm=25,h=1000地震记录数值模拟的褶积模型图3—8 Nw=32,v=3000,fm=25,h=1200地震记录数值模拟的褶积模型图3—9 Nw=32,v=3000,fm=25,h=1400地震记录数值模拟的褶积模型图3—10 Nw=32, h=1000,fm=25,v=2000地震记录数值模拟的褶积模型图3—11 Nw=32, h=1000,fm=25,v=4000地震记录数值模拟的褶积模型图3—12 Nw=32, h=1000,fm=25,v=6000地震记录数值模拟的褶积模型2)非垂直入射图4—1 Nw=32,h=1000,v=3000,fm=100地震记录数值模拟的褶积模型(左)和子波(右)图4—2 Nw=32,h=1000,v=3000,fm=200地震记录数值模拟的褶积模型(左)和子波(右)图4—3 Nw=32,h=1000,v=3000,fm=300地震记录数值模拟的褶积模型(左)和子波(右)图4—4 h=1000,v=3000,fm=25,Nw=20地震记录数值模拟的褶积模型(左)和子波(右)图4—5 h=1000,v=3000,fm=25,Nw=30地震记录数值模拟的褶积模型(左)和子波(右)图4—6 h=1000,v=3000,fm=25,Nw=40地震记录数值模拟的褶积模型(左)和子波(右)图4—7 Nw=32,v=3000,fm=25,h=1000地震记录数值模拟的褶积模型图4—8 Nw=32,v=3000,fm=25,h=1200地震记录数值模拟的褶积模型图4—9 Nw=32,v=3000,fm=25,h=1400地震记录数值模拟的褶积模型图4—10 Nw=32, h=1000,fm=25,v=2000地震记录数值模拟的褶积模型图4—11 Nw=32, h=1000,fm=25,v=4000地震记录数值模拟的褶积模型图4—12 Nw=32, h=1000,fm=25,v=6000地震记录数值模拟的褶积模型子波振幅谱:图5—1 fm=100的子波振幅谱图5—2 fm=100的子波振幅谱2、对比分析a)由图3—1、图3—2、图3—3(或图4—1、图4—2、图4—3)可知,当子波长度(Nw=32)、深度(h=1000)、速度(v=3000)不变,子波频率变化时,褶积模型不变,且均在0.5到1s之间;b)由图3—4、图3—5、图3—6可知,当深度(h=1000)、速度(v=3000)、子波频率(fm=25)不变, 子波长度变化,且垂直入射时,褶积模型为直线模型,是因为垂直入射时,时间与深度为线性关系;c)由图4—4、图4—5、图4—6可知,当深度(h=1000)、速度(v=3000)、子波频率(fm=25)不变, 子波长度变化,且非垂直入射时,褶积模型前半部分为双曲线模型,后半部分为直线模型,是由于计算的褶积结果的实际长度小于所取的长度,计算机赋的随机数所致,所以,非垂直入射时的褶积模型只有图件上显示的前半部分的双曲线,是由于非垂直入射时,时间与深度为双曲线关系;d)由图3—7、图3—8、图3—9,当子波长度(Nw=32)、速度(v=3000)、子波频率(fm=25)不变,深度变大时,垂直入射时,图件上显示的褶积模型的位置逐渐向下移,即地震波的旅行路程变大,旅行时变长;e)由图4—7、图4—8、图4—9可知,当子波长度(Nw=32)、速度(v=3000)、子波频率(fm=25)不变,深度变大时,非垂直入射时,图件上显示的褶积模型的位置不变,这是由于非垂直入射时,相当于地下有一半圆形界面,在圆心处自激自收;f)由图3—10、图3—11、图3—12(或图4—10、图4—11、图4—12)可知,当子波长度(Nw=32)、深度(h=1000)、子波频率(fm=25)不变,速度变大时,图件上显示的褶积模型的位置逐渐向上移,这是由于随着速度变大,地震波的旅行时变小;g)由图5—1与图5—2可知,当子波频率变化时,其振幅谱不变。
七、讨论建议1、实验收获通过此次试验,初步掌握了褶积模型基本理论、实现方法与程序编制,由褶积模型初步分析地震信号的分辨率问题,掌握了褶积模型与子波主频、子波长度、界面深度、介质中地震波速度的关系。
2、存在问题对褶积模型的理论实现过程不是十分清楚,对结果的物理含义理解不够深入。
3、其他问题由于不同的计算机,计算精度不一样,计算得到的数据结果可能会有部分差异,但总体趋势不变。
4、心得体会在此次试验中,应特别注意褶积模型的理论实现过程的理解,以及程序调试时,要特别仔细地去检查每一个错误,每修改一处错误,就重新运行一次程序。
附程序代码://=================1. 预处理部分==============//#include<math.h>#include<stdio.h>#include<string.h>float Cnltn(float,float);float Rflct(float,float,float);float Wave(float,float);#define Nx 128#define Nt 256#define Nw 32#define PI 3.1415926//==================2. 主程序波分==============//void main(){float dt=0.004,dx=20,fm=25,h=1000,v=3000;int iflag_Co,iflag_Re,iflag_Wv;if(iflag_Wv=Wave(fm,dt)!=1)printf("Wave is error");if(iflag_Re=Rflct(dt,h,v)!=1)printf("Reflection is error");if(iflag_Co=Cnltn(dt,dx)!=1)printf("Convosion is error");}// =================3.函数实现部分===============//// ==============3.1 Wave Formaing function=============// float Wave(float fm,float dt){FILE *fpw;int It;float Wa[Nw],t;if((fpw=fopen("wave.dat","wb"))==NULL)printf("Connot open file ""wave""");for(It=0;It<Nw;It++){t=It*dt;Wa[It]=cos(2*PI*fm*t)*exp(-2*PI*PI*fm*fm*t);//形成子波fwrite(&Wa[It],sizeof(Wa[It]),1,fpw);}fclose(fpw);return(1);}// ============3.2 Reflect Formaing function==============// float Rflct(float dt,float h,float v){FILE *fpr;int It,Ix,J,Ltdpth;float t,dx=20,x;float Re[Nt];printf("请输入J:\n");scanf("%d",&J);if((fpr=fopen("Reflect.dat","wb"))==NULL)printf("Connot open file ""Reflect""");for(Ix=0;Ix<Nx;Ix++){for(It=0;It<Nt;It++){Re[It]=0.;}if(J==1)t=2*h/v;//垂直入射反射界面由深度转换为自激自收时间if(J==2){x=Ix*dx;t=2*sqrt(h*h+x*x)/v;//非垂直入射反射界面由深度转换为自激自收时间}if((J!=1)&&(J!=2))printf("输入错误\n");Ltdpth=(int)(t/dt);Re[Ltdpth]=1;for(It=0;It<Nt;It++){fwrite(&Re[It],sizeof(Re[It]),1,fpr);}}fclose(fpr);return(1);}// =============3.3 Convolution function=============// float Cnltn(float dt,float dx){FILE *fpc,*fpw,*fpr;int It,Ix,Itao;float Wa1[Nw],Wa[Nw],Re[Nt+Nw+Nw],Re1[Nt],t;float Con[Nt+Nw];if((fpc=fopen("Convosion.dat","wb"))==NULL)printf("Connot open file ""Convosion""");if((fpw =fopen("wave.dat","rb"))==NULL)printf("Connot open file ""wave""");if((fpr =fopen("Reflect.dat","rb"))==NULL)printf("Connot open file ""Reflect""");for(Ix=1;Ix<2;Ix++){for(It=0;It<Nw;It++){fread(&Wa1[It],sizeof(Wa1[It]),1,fpw);}for(It=0;It<Nw;It++)Wa[It]=Wa1[Nw-It-1];//褶积前子波准备}fclose(fpw);for(Ix=0;Ix<Nx;Ix++){for(It=0;It<Nt;It++){fread(&Re1[It],sizeof(&Re1[It]),1,fpr);}for(It=0;It<Nt+2*Nw;It++){Re[It]=0;}for(It=0;It<Nt;It++){Re[It+Nw]=Re1[It];//反射系数准备}for(It=0;It<Nt+Nw;It++){Con[It]=0;t=0;for(Itao=0;Itao<Nw;Itao++){t+=Re[It+Itao]*Wa[Itao];//褶积运算}Con[It]=t;}for(It=Nw/2;It<Nt+Nw/2;It++){fwrite(&Con[It],sizeof(Con[It]),1,fpc);}}fclose(fpw);fclose(fpr);fclose(fpc);return(1);}。