STRATA 程序的原理

合集下载

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个开源的Java Web应用框架,它基于MVC(Model-View-Controller)设计模式,用于简化Web应用程序的开发过程。

它提供了一套标准的框架和组件,使开发人员能够更加高效地构建可维护和可扩展的Web应用程序。

Struts的工作原理主要包括以下几个方面:1. 请求的处理流程:当用户发送一个HTTP请求时,Struts的核心控制器DispatcherServlet会接收到这个请求,并将其转发给相应的Action类进行处理。

Action类是一个Java类,负责处理用户请求,并生成相应的响应结果。

2. 配置文件的使用:Struts使用XML配置文件来管理整个应用程序的配置信息。

其中,struts-config.xml是主配置文件,用于配置Action、Form、Forward等组件。

在这个文件中,可以定义请求路径与Action类的映射关系,以及各种拦截器、验证器等。

3. MVC设计模式的应用:Struts采用MVC设计模式,将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。

- 模型(Model):模型代表应用程序的数据和业务逻辑。

在Struts中,模型通常由JavaBean组成,用于封装数据。

- 视图(View):视图负责呈现模型的数据给用户。

在Struts中,视图通常是JSP页面,用于显示用户界面。

- 控制器(Controller):控制器负责处理用户请求并调用相应的模型和视图。

在Struts中,控制器由Action类来实现。

4. 表单数据的处理:在Web开发中,表单数据是非常重要的一部分。

Struts提供了Form组件来处理表单数据。

Form组件是一个JavaBean,用于封装表单数据,以便于在Action类中进行处理和验证。

5. 拦截器的应用:Struts的拦截器是一种可插拔的组件,用于在请求的处理过程中进行预处理和后处理。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个用于开发Java Web应用程序的开源框架,它基于MVC(Model-View-Controller)设计模式,旨在简化Web应用程序的开发过程。

Struts框架提供了一套标准的开发流程和组件,以帮助开发人员更加高效地构建可维护和可扩展的Web应用程序。

Struts的工作原理可以分为以下几个步骤:1. 请求的接收与处理当用户在浏览器中输入URL或点击页面上的链接时,请求将发送到Web服务器。

Web服务器通过配置将请求发送给Struts框架的核心控制器,即ActionServlet。

2. 核心控制器的处理ActionServlet是Struts框架的核心组件,它负责接收并处理所有的请求。

当ActionServlet接收到请求后,它会根据配置文件中的映射关系找到相应的Action类来处理请求。

3. Action类的执行Action类是Struts框架中的控制器组件,负责处理具体的业务逻辑。

在接收到请求后,ActionServlet会根据配置文件中的映射关系实例化相应的Action类,并调用其execute()方法来执行业务逻辑。

4. 数据封装与验证在执行业务逻辑之前,Struts框架会根据配置文件中的映射关系,将请求中的参数封装到Action类的属性中。

同时,Struts框架还提供了数据验证的功能,可以通过配置文件对请求参数进行验证,确保数据的合法性。

5. 业务逻辑的处理在Action类的execute()方法中,开发人员可以编写具体的业务逻辑代码。

例如,从数据库中读取数据、调用其他服务等。

执行完业务逻辑后,Action类会返回一个结果视图,即要展示给用户的页面。

6. 视图的渲染与响应在Action类执行完业务逻辑后,它会返回一个结果视图的逻辑名称。

Struts框架会根据配置文件中的映射关系找到对应的JSP页面,并将结果数据传递给JSP页面进行渲染。

最终,Struts框架会将渲染后的HTML页面作为响应发送给用户的浏览器。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个开源的Java Web应用程序框架,它基于MVC(Model-View-Controller)设计模式,用于简化Web应用程序的开发。

Struts框架通过将应用程序的不同层进行分离,提供了一种结构化的方法来构建Web应用程序。

Struts的工作原理可以分为以下几个步骤:1. 请求的接收:当用户在浏览器中发起请求时,Struts框架的前端控制器(Front Controller)会拦截请求。

前端控制器是一个Servlet,它负责接收所有的请求,并将请求分发给相应的处理程序。

2. 请求的处理:前端控制器将请求分发给相应的Action类。

Action类是一个Java类,它包含了处理请求的业务逻辑。

在Struts中,Action类是通过继承ActionSupport类来实现的。

3. 表单数据的处理:如果请求中包含表单数据,Struts框架会自动将表单数据封装到一个JavaBean对象中。

这个JavaBean对象通常被称为ActionForm。

ActionForm是一个普通的Java类,它包含了与表单字段对应的属性和相应的getter 和setter方法。

4. 业务逻辑的处理:在Action类中,可以编写业务逻辑代码来处理请求。

这些代码可以访问数据库、调用其他Java类或执行其他必要的操作。

一般情况下,业务逻辑的处理会产生一个结果,比如一个页面的显示或者一个重定向。

5. 视图的渲染:根据业务逻辑的结果,Struts框架会选择合适的视图来渲染。

视图通常是一个JSP页面,它负责将结果展示给用户。

在JSP页面中,可以使用Struts标签库来获取ActionForm中的数据,并根据需要进行显示。

6. 响应的发送:一旦视图完成渲染,Struts框架会将响应发送回浏览器,用户可以看到相应的结果。

这个响应可以是一个完整的HTML页面,也可以是一个XML文档或其他格式的数据。

总结:Struts的工作原理可以简单概括为:接收请求、处理请求、封装表单数据、执行业务逻辑、选择视图、渲染视图、发送响应。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个基于Java技术的开源Web应用框架,它的工作原理主要包括以下几个方面:1. 请求处理流程:当客户端发送一个HTTP请求时,Struts框架会先由Servlet容器接收请求并将其传递给Struts的核心控制器DispatcherServlet。

DispatcherServlet负责将请求分发给相应的Action类进行处理。

2. 控制器:Struts的控制器是一个Servlet,它通过配置文件(struts-config.xml)定义了请求的处理方式。

在接收到请求后,控制器根据配置文件中的映射关系,找到对应的Action,并将请求转发给该Action处理。

3. Action处理:Action是Struts中的核心组件,它是一个POJO(Plain Old Java Object),负责接收请求的数据并调用业务逻辑处理。

Action可以通过实现Action接口或继承ActionSupport类来定义相应的处理方法。

4. 视图解析:在Action处理完成后,会返回一个逻辑视图名(logical view name),它表示了请求处理的结果。

Struts框架将根据视图配置文件(struts-config.xml)中的映射关系,找到对应的视图解析器(View Resolver)来解析逻辑视图名,并生成具体的视图页面。

5. 视图渲染:视图渲染是将模型数据填充到具体的视图页面中的过程。

Struts框架支持多种视图技术,如JSP、FreeMarker等。

视图模板通常包含了动态生成的HTML代码以及与模型数据相关的标签或脚本。

6. 响应输出:最后,Struts框架将渲染好的视图页面作为HTTP响应返回给客户端浏览器,并结束请求处理流程。

总结起来,Struts框架的工作原理是通过控制器分发请求给对应的Action进行处理,再将处理结果交给视图解析器解析并渲染成最终的视图页面,最后将视图页面作为HTTP响应返回给客户端。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个基于Java的开源Web应用程序框架,它遵循了MVC(Model-View-Controller)设计模式,用于简化Web应用程序的开辟过程。

Struts的工作原理涉及到请求的处理、控制流程以及数据流动等方面。

下面将详细介绍Struts的工作原理。

1. 请求处理:当用户在浏览器中输入URL并发送请求时,请求首先到达Web服务器。

Web服务器根据URL的映射规则将请求转发给Struts框架。

2. 控制流程:Struts框架通过一个核心控制器(Controller)来管理请求的处理流程。

核心控制器是一个Servlet,它负责接收请求并将其分发给相应的Action处理。

3. Action处理:Action是Struts框架的核心组件之一,负责处理具体的业务逻辑。

每一个Action对应一个特定的请求,它接收请求参数、执行相应的业务逻辑,并返回结果。

4. 数据流动:在Struts框架中,数据的流动遵循MVC设计模式。

当请求到达Action时,Action会根据请求参数获取所需的数据,并将其存储在一个称为ActionForm的JavaBean中。

5. 视图呈现:视图(View)负责将处理结果展示给用户。

在Struts框架中,通常使用JSP (JavaServer Pages)作为视图技术。

Action会将处理结果传递给JSP,然后JSP负责将结果呈现给用户。

6. 结果返回:在Action处理完成后,它会返回一个结果对象给核心控制器。

结果对象包含了下一步要执行的操作,比如跳转到另一个页面或者返回错误信息。

7. 响应生成:核心控制器根据结果对象中的指示,生成相应的响应并返回给Web服务器。

Web服务器将响应发送给浏览器,最终用户可以看到处理结果。

总结:Struts框架的工作原理可以概括为:用户发送请求到Web服务器,Web服务器将请求转发给Struts框架的核心控制器,核心控制器将请求分发给相应的Action进行处理,Action处理完成后将结果返回给核心控制器,核心控制器根据结果生成响应并返回给Web服务器,最终用户可以看到处理结果。

浅析Struts体系结构与工作原理(图)

浅析Struts体系结构与工作原理(图)

浅析Struts体系结构与工作原理(图)基本概念Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目它采用MVC模式能够很好地帮助java 开发者利用J EE开发Web应用和其他的java架构一样 Struts 也是面向对象设计将MVC模式分离显示逻辑和业务逻辑的能力发挥得淋漓尽致Structs 框架的核心是一个弹性的控制层基于如Java Servlets JavaBeans ResourceBundles与XML等标准技术以及Jakarta Commons 的一些类库Struts有一组相互协作的类(组件)Serlvet 以及jsp tag lib组成基于struts构架的web应用程序基本上符合JSP Model 的设计标准可以说是一个传统 MVC设计模式的一种变化类型Struts有其自己的控制器(Controller)同时整合了其他的一些技术去实现模型层(Model)和视图层(View)在模型层 Struts可以很容易的与数据访问技术相结合如JDBC / EJB 以及其它第三方类库如Hibernate / iBATIS 或者 Object Relational Bridge(对象关系桥) 在视图层 Struts能够与JSP 包括 JSTL 与 JSF 以及 Velocity 模板 XSLT 与其它表示层技术Struts 为每个专业的Web 应用程序做背后的支撑帮助为你的应用创建一个扩展的开发环境Struts的体系结构与工作原理MVC即Model View Controller的缩写是一种常用的设计模式 MVC 减弱了业务逻辑接口和数据接口之间的耦合以及让视图层更富于变化 MVC的工作原理如下图所示图Struts 是MVC的一种实现它将 Servlet和 JSP 标记(属于 J EE 规范)用作实现的一部分 Struts继承了MVC的各项特性并根据J EE 的特点做了相应的变化与扩展 Struts的体系结构与工作原理如下图所示图从图中我们可以知道 Struts的体系结构包括模型(Model)视图(View)和控制器(Controller)三部分下面让我们从MVC 角度来看看struts的体系结构(Model )与工作原理)模型(Model)在Struts的体系结构中模型分为两个部分系统的内部状态和可以改变状态的操作(事务逻辑)内部状态通常由一组Actinform Bean表示根据设计或应用程序复杂度的不同这些Bean可以是自包含的并具有持续的状态或只在需要时才获得数据(从某个数据库)大型应用程序通常在 ... 内部封装事务逻辑(操作)这些 ... 可以被拥有状态信息的bean调用比如购物车bean 它拥有用户购买商品的信息可能还有checkOut() ... 用来检查用户的信用卡并向仓库发定货信息小型程序中操作可能会被内嵌在Action类它是struts框架中控制器角色的一部分当逻辑简单时这个 ... 很适合建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开)视图(View)视图主要由JSP建立struts包含扩展自定义标签库(TagLib)可以简化创建完全国际化用户界面的过程目前的标签库包括 Bean Tags HTML tags Logic Tags Nested Tags 以及Template Tags等)控制器(Controller)在struts中基本的控制器组件是ActionServlet类中的实例servelt 实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义对于业务逻辑的操作则主要由Action ActionMapping ActionForward这几个组件协调完成的其中Action 扮演了真正的业务逻辑的实现者ActionMapping与ActionForward 则指定了不同业务逻辑或流程的运行方向 struts config xml 文件配置控制器Struts体系结构中的组件图上图显示了 ActionServlet (Controller) Actionform (form State) 和 Action (Model Wrapper) 之间的最简关系体系结构中所使用的组件如下表ActionServlet 控制器ActionClass 包含事务逻辑Actionform 显示模块数据ActionMapping 帮助控制器将请求映射到操作ActionForward 用来指示操作转移的对象ActionError 用来存储和回收错误Struts标记库可以减轻开发显示层次的工作Struts配置文件struts config xml Struts配置文件struts config xml 我们默认可以在目录WEB INFstruts config xml找到这个文件文件的配置包括全局转发ActionMapping类Actionform bean 和JDBC数据源四个部分)配置全局转发全局转发用来在JSP页之间创建逻辑名称映射转发都可以通过对调用操作映射的实例来获得例如NuW=mactionMappingInstace findForward( logicalName ); 全局转发的例子<global forwards><forward name= bookCreated path= /BookView jsp /></global forwards>属性描述Name 全局转发的名字Path 与目标URL的相对路径)配置ActionMapping ActionMapping对象帮助进行框架内部的流程控制它们可将请求URI 映射到Action类并且将Action类与Actionform bean相关联ActionServlet在内部使用这些映射并将控制转移到特定Action类的实例所有Action类使用perform() ... 实现特定应用程序代码返回一个ActionForward对象其中包括响应转发的目标资源名称例如<action mappings><action path= /createBook type= BookAction name= bookform scope= request input= /CreateBook jsp ></action><forward name= failure path= /CreateBook jsp /><forward name= cancel path= /index jsp /></action mappings>属性描述Path Action类的相对路径Name 与本操作关联的Action bean的名称Type 连接到本映射的Action类的全称(可有包名)Scope Actionform bean的作用域(请求或会话)Prefix 用来匹配请求参数与bean属性的前缀Suffix 用来匹配请求参数与bean属性的后缀attribute 作用域名称className ActionMapping对象的类的完全限定名默认的是apache struts action ActionMapping input 输入表单的路径指向bean发生输入错误必须返回的控制unknown 设为true 操作将被作为所有没有定义的ActionMapping的URI的默认操作validate 设置为true 则在调用Action对象上的perform() ... 前 ActionServlet将调用Actionform bean的validate() ... 来进行输入检查通过<forward >元素可以定义资源的逻辑名称该资源是Action类的响应要转发的目标属性描述Id ID ClassName ActionForward类的完全限定名默认是apache struts action ActionForward Name 操作类访问ActionForward时所用的逻辑名Path 响应转发的目标资源的路径redirect 若设置为true 则ActionServlet使用sendRedirec ... 来转发资源)配置Actionform Bean ActionServlet使用Actionform来保存请求的参数这些bean的属性名称与HTTP请求参数中的名称相对应控制器将请求参数传递到Actionform bean的实例然后将这个实例传送到Action类例子<form beans><form bean name= bookform type= Bookform /></form beans>属性描述Id ID className Actionform bean的完全限定名默认值是apache struts action ActionformBean Name 表单bean在相关作用域的名称这个属性用来将bean与ActionMapping进行关联Type 类的完全限定名)配置JDBC数据源用<data sources>元素可以定义多个数据源属性描述Id ID Key Action类使用这个名称来寻找连接Type 实现JDBC接口的类的名称下面属性需要<set property>元素定义在Struts 版本中已不在使用但你可用<data source>元素例如 | <data sources><data source id= DS key= conPool type= apache struts util GenericDataSource<set property id= SP autoCommit= true description= Example Data Source Configuration driverClass= test mm mysql Driver maxCount= minCount= url= jdbc:mysql://localhost/test user= struts password= ghq /><data source/></data sources>属性描述desciption 数据源的描述autoCommit 数据源创建的连接所使用的默认自动更新数据库模式driverClass 数据源所使用的类lishixinzhi/Article/program/Java/ky/201311/28531。

Struts新手详解【1】_Struts实现流程

Struts新手详解【1】_Struts实现流程

Struts旅程(一)Struts简介和原理struts简介Struts是Apache软件基金会(ASF)赞助的一个开源项目。

它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。

它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

Struts发展历史Struts是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、servlet、标签库以及面向对象的技术水准。

Struts这个名字的来源于在建筑和旧式飞机中使用的支持金属架。

之所以这个框架叫做“struts”,是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷的基础支撑。

这也是解释struts在开发web应用程序中所扮演的角色的精彩描述。

Struts的含义是”支柱,枝干”,它的目的是为了减少程序开发的时间,项目的创建者认为JSP,servlet的存在虽然可以帮助用户解决大部分问题,但是由于它们的编码对项目的开发带来了许多的不方便,可重用性也差,所以struts应运而生,帮助用户在最短的时间内解决这些问题。

Struts框架提供如下服务:(1)作为控制器的Servlet。

(2)提供大量的标签库。

(3)提供了用于国际化的框架,利用不同的配置文件,可以帮助用户选择合适自己的语言。

(4)提供了JDBC的实现,来定义数据源和数据库连接池。

(5)XML语法分析工具。

(6)文件下载机制。

Struts原理Struts是对JSPModel2设计标准的一种实现,下面分别从模型(Model)、视图(view)和控制器3个部分介绍Struts的体系结构和工作原理。

调用流程如下所示(图1.1)。

图1.1(1)视图(view)在Struts中,视图层包含两个部分,JSP页面和ActionForm。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个基于Java的开源Web应用程序框架,它被广泛应用于构建企业级Java Web应用程序。

Struts框架采用了MVC(Model-View-Controller)的设计模式,以帮助开发人员更好地组织和管理Web应用程序的各个组件。

Struts的工作原理可以简要概括为以下几个步骤:1. 请求的接收和处理:当用户在浏览器中访问Struts应用程序时,首先会由Servlet容器(如Tomcat)接收到HTTP请求。

Servlet容器会将请求发送给Struts的前端控制器DispatcherServlet。

2. 前端控制器的处理:DispatcherServlet是Struts框架的核心组件,它负责接收并处理所有的请求。

DispatcherServlet会根据请求的URL和配置文件中的映射关系,将请求分发给相应的Action类进行处理。

3. Action类的执行:Action类是Struts框架中负责处理具体业务逻辑的组件。

当DispatcherServlet将请求分发给对应的Action类时,Action类会根据请求中的参数和数据,执行相应的业务逻辑操作。

4. 数据的处理和封装:在Action类中,可以通过使用FormBean将请求中的数据进行处理和封装。

FormBean是一个JavaBean,用于封装用户提交的表单数据。

Action类可以从FormBean中获取用户提交的数据,并进行相应的数据处理和验证。

5. 视图的渲染:在Action类完成业务逻辑的处理后,通常会将处理结果封装在一个ActionForm中,并将控制权交给视图组件进行渲染。

视图组件通常是一个JSP页面,它负责将ActionForm中的数据展示给用户。

6. 结果的返回:视图组件将渲染后的页面返回给前端控制器DispatcherServlet。

DispatcherServlet将页面发送给客户端浏览器进行显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

、STRATA 程序的原理1.0前言STRATA 程序的基本原理从图1.1可容易看出。

图1.1 STRATA 基本原理从包括迭加地震数据和速度/密度信息的两个输入流(以井的测井曲线或RMS速度格式),得到一个基本的地下速度模型,然后用这个模型做整个地震数据的反演。

虽然这个目的简单,但达到这个目的要产生许多困难。

因此,这个程序包括做下面事的算法:合成地震记录的产生交互的测井曲线的拉伸和压缩子波提取叠后地震处理地震拾取用垂直的和横向的插值建立模型应用几种反演算法反演这些项目的相互作用在图1.2已经表明。

图1.2 STRATA各部分的相互关系程序设计具有高质量的图解方式和用户友好的菜单控制。

对于程序运行和特定菜单项目的信息,参考这个用户手册的前面部分。

在这一章里我们将叙述用于STRATA的主要算法的原理。

所研究的问题包括褶积模型、反褶积、反演和属性。

假设程序的其它部分,如测井曲线的拉伸和压缩、处理步骤象滤波和AGC、模型建立用户十分熟悉,或当用这个程序时是显然的。

2.0褶积模型地震道基本的褶积模型可写为:公式中: r(j)= 以时间序列表示的地表零偏移距反射系数;W(i)=地震子波,假设固定;N(i)=附加的测量噪音。

注意在这个模型里,假设多种被忽略。

反演可认为是给定地震道T(i),求去反射系数r(j)的处理。

在公式2-1中,反射系数与地表波阻抗的关系是公式:公式中:I(i)=ρ(j)V(j)ρ=密度V=P 波速度在第5章里我们将看到,反演的目的是从地震道估算地表的速度。

显然,首先需要从褶积模型中提取一个估算的反射系数,然后研究在第4章论述的相关的反褶积处理。

在考虑反褶积或反演前,让我们更详细的看看褶积模型的两个主要的组成部分,子波和反射系数。

2.1反射系数当震源的能量通过爆炸或一个座板突然碰撞地面释放时,这种能量以弹性波通过地层传播。

人们熟悉的最简单类型的波是压缩波(纵波),象声音一种声波干扰。

岩石允许声波通过的性能是通过岩石纵波的速度和密度产生的声波阻抗给定的(类似于电路里电阻的原理)。

同预期的一样,岩石越强,声波阻抗越高。

例如,一般压实砂岩具有比泥岩高声波阻抗(孔隙度也影响速度:孔隙度越高,速度越低)。

每当地震反射出现就有声波阻抗的改变。

如果我们研究两个不同声波阻抗的层之间地层走向边界的声波幅度,反射幅度可记为上述的公式2-2。

公式2-2表明反射系数可正可负,它取决于I(j-1)或I(j)比较大,但它的绝对值大小不超过1。

对下行波从上地层走向边界的上述分析,上行波的反射系数的确相对于下行波的反射系数是负的。

显然,不是所有的入射幅度都能反射(虽然海上记录在空气-水界面这种情况,几乎反射系数接近1)。

传播幅度的大小入射幅度和反射幅度之间是不同的,或:注意如果r 为负,T 大于1,也就大于入射幅度!解决这种明显矛盾的方法只有通过物理系统记录能量被保存得知,而不是幅度。

能量与下行和上行的路径有关。

对于下行路径,我们仅看r 符号的变化。

因此,总的透射系数可记为:我们可看到,公式2-4告诉我们总的透射幅度总是小于1。

注意,随层数的增加透射损失的影响也比较大。

总的影响可表示为:∑++-=j i n j i W j r i T )()1()()()1()()1()()(-+--=j I i I j I j I jR )1()()1(2)(1)(-+-=-=j I j I j I j r jT 22)(1))(1))((1(j r j r j r T way -=+-=-公式中:N=层数;r(j)=第j 个界面的反射系数;r A V =平均反射系数。

也就是说,总的透射损失是透射通过我们感兴趣的每层界面上面的损失产生的。

公式2-5也认为,如果我们用平均反射系数替代各个反射系数,透射影响近似等于两种图景透射系数N 次幂。

为了获得影响的设想,假设是100层叠加(采样率2ms, 相当于200ms )。

如果平均反射系数是0.1,透射比例系数是0.366。

然而,如果平均反射系数是0.05,总的比例仅仅是0.779。

重点注意,仅在P 波是垂直入射界面时公式2-2到2-5成立。

非垂直入射时,波型转换发生,产生反射和透射的横波。

测定岩性地震学的精确量度时,为了推测这个影响是非常重要的。

对于叠后的情况,我们假设公式2-2精确地预测反射振幅。

2.2 地震子波地震数据记录的第一步是震源图象的产生。

陆地上,两种最普遍的震源是炸药—通常比较深的埋藏,和可控震源—长时间延续振动地面震源。

海上记录,空气枪是最普遍的震源。

如果我们知道震源的准确类型,我们可以用反褶积处理反演。

参考确定性反褶积。

然而,我们常常没有这种记录信息,必须用统计反褶积技术估计震源类型。

(在STRA TA 中包括了这两种反褶积类型)。

子波通过振幅和相位谱定义。

相位谱的类型我们认为是零相位、常数相位、最小相位、和非最小相位。

为了了解零相位和常数相位子波的原理,不同的振幅、频率和所有零相位和常数相位(即900)正弦波的数简单地加起。

然而,最小相位不是作为简单的原理去理解,有许多不同的描述方法。

最简单的是一种直观的方法,时间计算起点前最小相位子波的情况不存在(数学上我们说子波是由某种原因引起的),能量的大部分集中在波前。

实地上,术语“最小相位” 指的是所有具有相同振幅和不同相位谱的因果子波的事实,唯一的它的相位谱最接近零的是最小相位子波。

原来子波相位大量的有效信息可通过应用简单两点子波获得W 1=(2,1) 2-6W 2=(1,2) 2-7子波W 1是最小相位,而子波W 2是非最小相位。

事实上,把子波W 2称为最大相位。

让我们现在推导有关这两个子波振幅和相位谱的信息。

首先,设想该公式2-6的子波Z 变换:W (Z )=2+Z 2-8现在,作代换公式中 j=√-1ω=2πf注意这是合理的代换,由于2-9复指数包含余弦和正弦函数, 是傅立叶变换基本原理. 现在把公式2-9代人公式2-8,我们就得到子波的傅立叶变换:)sin()cos(t j t e Z t j ωωω-==-Im Re )sin()cos(2)(j t j t e W t j -=-+=-ωωωN N j AV total r j r T )1())(1(122∏=-=-=公式中 Re = 傅立叶变换的实数部分 = 2+cos(ωt)Im = 傅立叶变换的虚数部分=sin(ωt)为了从实数部分和虚数部分得到傅立叶变换的振幅和相位谱,我们以下面的方法从直角坐标变换到极坐标:公式中 |W(ω)|=W的振幅谱 θ(f)=W的相位谱用类似的方法,W2Z 的变换和傅立叶变换可以用下式表示:公式中 ; W1和W2振幅和相位曲线图如图2.1所示注意两种信号的振幅谱是相同的,而它们的相位谱不同,图2.1没有,子波W1具有最小相位谱。

子波W2是非最小相位谱。

事实上,子波W2具有最大相位的特性。

首先,考虑三点子波的Z 变换:傅立叶变换可记为:振幅和相位谱可用前面导出的关系计算。

让我们通过三种可能的组合旋转子波W1和W2产生三点子波:W 3=W 1*W 1=(4,4,1) 2-16W 4=W 1*W 2=(2,5,2) 2-17)()()(f j e W W θωω=2/12/122/122)]cos(45[)](sin )(cos )cos(44[)Im (Re 2t t t t ωωωω+=+++=+=))]cos(2/()(arctan[sin Re]arctan[Im/t t ωω+==)(2222)()(21)(ωφωωj e W W ZZ W =+=))]cos(21/()sin(2arctan[)()]cos(45[)(22/12t t t W ωωωφωω+-=+=2210)(Z a Z a a Z A ++=))2sin()sin(())2cos()cos(()(212102210t a t a j t a t a a e a e a a A tj t j ωωωωωωω+-++=++=--W5=W2*W2=(1,4,4)2-18这三个子波的振幅谱如图2.2顶部所示,是相同的。

当我们认识到子波W1和W2的振幅谱是相同的这有意义。

相位谱如图2.2底部所示。

注意子波W3应该是最小相位,因为它是两个最小相位子波的褶积。

同样,子波W5应该是最大相位,因为它是两个最大相位子波的褶积。

但子波W4是最小和最大相位子波褶积它怎么样呢?这称之为混和相位子波。

从图2.2可以看出,混和相位子波的相位谱在最小和最大相位子波的相位谱的之间。

叙述的原理仅概括出了N脉冲子波。

如子波可通过N-1 2-点子波褶积,这些子波的每一个都具有形式:W i=(a i,b i) 2-19如果a>b任何2-脉冲子波是最小相位,如果a<b是最大相位(如果a=b,我们得到位置称为单位园上的原点,可能引起问题,碰巧,很少出现)。

下面三种叙述可能产生:1)如果所有2-脉冲子波都是最小相位,所得到的N-脉冲子波是最小相位;2)如果所有2-脉冲子波都是最大相位,所得到的N-脉冲子波是最大相位;3)如果2-脉冲子波是最小和最大相位组合,所得到的N-脉冲子波是混合相位;。

反褶积可认为是一个两步处理。

第一;我们寻找子波。

第二,我们通过应用其反演除去子波。

再提到反褶积部分的注解之前,让我们提一个问题:任何子波都有准确的反演吗?我们将通过研究公式2-6和2-6的最小相位2-点子波试着回答的这个问题。

通过公式2-8的多项式除法子波的反演可记为:W t-1 =f=(1/2,-1/4,1/8,-1/16,…) 2-20也就是说,子波具有无限多的反演,为了应用子波反演,因此,必须在一些点上截取。

怎样大小的井可做反演运算,我们可比较最后输出的理想结果的脉冲。

让我们首先考虑截取长度为2的反演滤波器。

W t f t=(2,1)*(1/2,-1/4)=(1,0,-1/4) 2-21应用一个长为3的反演滤波器长,我们得到W t f t=(2,1)*(1/2,-1/4,1/8)(1,0,0,-1/8) 2-22注意最后的样点总有一个错误项。

虽然算子的长度越长,输出错误越小,但对于无限长的算子仅趋于零。

当我们寻找时,精确的反演总不是最好的。

再第三章里,我们将研究解反演的最小二乘方法。

2.0子波提取为了完成反演STRATA需要有关地震子波的信息。

在地震处理中子波的问题是一个复杂的问题,是现行研究的普遍领域。

虽然已产生了许多子波提取方法,但下面做出了概括的叙述:1.在频率域里,我们可认为子波提取的问题由两部分组成:确定振幅谱;确定相位谱。

这两部分,确定相位谱要困难的多,而且是存在于反演中的主要的错误源。

2.子波提取方法分成三个主要的类型:a)完全确定性:这意味着直接应用地表接受器和其它方法测量子波:b)纯统计:这意味着仅从地震数据中确定子波。

相关文档
最新文档