⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getsegytracedata.m

📁 matlab编写的地震数据格式转换
💻 M
字号:
% GetSegyTraceData : Get Segy trace data if filehandle% % Call : %%   tracedata=GetSegyTraceData(segyid,ns,SegyHeader,SkipData%%% (C) 2001-2004 Thomas Mejer Hansen, tmh@gfy.ku.dk/thomas@cultpenguin.com%%    This program is free software; you can redistribute it and/or modify%    it under the terms of the GNU General Public License as published by%    the Free Software Foundation; either version 2 of the License, or%    (at your option) any later version.%%    This program is distributed in the hope that it will be useful,%    but WITHOUT ANY WARRANTY; without even the implied warranty of%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the%    GNU General Public License for more details.%%    You should have received a copy of the GNU General Public License%    along with this program; if not, write to the Free Software%    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA%function tracedata=GetSegyTraceData(segyid,ns,SegyHeader,SkipData)
%% Get Segy Trace Data. %%SkipData=[];    if nargin==0,    SegymatVerbose(exist('segyid'))    SegymatVerbose([mfilename,' : SEGYID not specified - exiting'])    tracedata=[];    returnendif nargin==1  SegymatVerbose([mfilename,' : NS not specified - exiting'])  tracedata=[];  returnendif nargin==2    SegyHeader.DataFormat='float32';     SegyHeader.BytesPerSample=32;    SegyHeader.DataSampleFormat=5; % IEEE    SegymatVerbose(['Dataformat not specified -  dataformat->',SegyHeader.DataFormat])end;if isempty(SkipData)==1, SkipData=0; end
Revision=SegyHeader.SegyFormatRevisionNumber;if Revision>0, Revision=1; endFormat=SegyHeader.Rev(Revision+1).DataSampleFormat(SegyHeader.DataSampleFormat).format;  BPS=SegyHeader.Rev(Revision+1).DataSampleFormat(SegyHeader.DataSampleFormat).bps;  if (SkipData==1)    SkipBytes=ns*BPS/8;    fseek(segyid,SkipBytes,'cof');    tracedata=[];else      % SegymatVerbose([mfilename,' : ',Format,'. ns=',num2str(ns)])    try       tracedata=fread(segyid,ns,Format);    catch      SegymatVerbose([mfilename,' : Error using fread - Possibly ''ns'' is negative -' ...	    ' check byteorder-'])      tracedata=[];    end            if (strcmp(Format,'uint32')==1), % IBM FLOATING POINT        % CONVERT FROM FLOATING POINT
        verbose=1;        if verbose>1, SegymatVerbose([mfilename,'Converting from IBM, DataFormat :',SegyHeader.DataFormat]); end        try          tracedata=ibm2num(uint32(tracedata));        catch          % SegymatVerbose([mfilename,' : SOMETHING BAD HAPPENED WHEN CONVERTING FROM IBM FLOATS TO IEEE. ARE YOU SURE DATA ARE IBM FLOAT FORMATTED ?' ])          % tracedata=0.*tracedata;          % return        end    end;    end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -