File Exchange - MATLAB Central

Embed Size (px)

Citation preview

  • 7/25/2019 File Exchange - MATLAB Central

    1/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    Search: File Exchange

    Create Account Log I

    F il e Ex ch an ge A ns we rs N ew sg ro up L in k Ex ch an ge B lo gs T ren dy C od y C on te st Ma th Wo rks .c om

    by Stuart Kozola

    Large Data in MATLAB: A SeismicData Processing Case Study

    01 Mar 2011

    These are the files used in the webinar on Feb. 23, 2011.

    SegYFileReader

    Download Zip

    Code covered by the BSD License

    Highlights from

    Large Data in MATLAB: ASeismic Data ProcessingCase Study

    Large Data in MATLAB: A C...

    Seismic Migration Example...

    fm2d(v,model,nz,dz,nx,dx,...

    fm2d_gpu(v,model,nz,dz,nx...

    ibm2ieee

    Name: ibm2ieee

    migrate(travelTime,shot,d...

    Migrate a shot record for a given

    travel time between shot (source)

    and

    plotProgress(X,Y,Z,curren...

    check to see if figure exists

    ray2d(V,Shot,dx)

    2D ray-tracing

    ricker(f,n,dt,t0,t1)

    RICKER creates an causal ricker

    wavelet signal

    rtm2d(v,data,nz,dz,nx,dx,...

    rtm2d_gpu(v,data,nz,dz,nx...

    seismic(n)

    seismic(n) creates a colormap,

    ranging from dark blue via white to

    dark red.

    shot2RecTime(travelTime,i...

    shotRecordLocator(shotNum...

    Number of traces per shot record

    Seg2FileReader

    Seg2FileReader SEG2 file reader

    class.

    SegYFileReader

    SegYFileReader SEG Y file reader

    class.

    SegyMemmap

    SeismicFileReader

    SeismicFileReader Seismic file

    reader class.

    travelTimeMemmap

    migrateExample.m

    Seismic Migration with a 20 GB Arraybuild.m

    saltModelMigrationRTM.m

    Seismic Migration Example

    setup.m

    View all files

    classdef SegYFileReader < SeismicFileReader%SegYFileReader SEG Y file reader class.%% SegYFileReader is a SeismicFileReader class that provides basic% functionality for reading a SEG Y formatted file. This class can read% SEG Y Version 0/1 files.%% SegYFileReader properties:

    % FileDescriptor SEG2 file identifier label (must = 3A55h)% FileName name of the seismic binary file% FilePath path of the file% FileFormat file format description% FileHeader Header information from the seismic file% MachineFormat Binary file format, big/little endian% NumberOfTraces Number of traces in the file% TraceDescription Trace information from the seismic file%% See also SEISMICFILEREADER, SEG2FILEREADER

    properties (SetAccess = protected)TapeLabel = '';

    end % public properties

    methodsfunction obj = SegYFileReader(fileName,procHeader,procTraceHeader,endian)

    % Constructor for Seg2FileReaderif ~exist('fileName','var')

    % creat an empty clasefileName = '';procHeader = false;

    end

    if ~exist('procHeader','var')% read in the headerprocHeader = true;

    end

    if ~exist('procTraceHeader','var')% read in the headerprocTraceHeader = true;

    end

    if ~exist('endian','var')endian = 'ieeebe'; % SEGY Rev 1.0 should be big endianend

    obj = obj@SeismicFileReader(fileName);obj.MachineFormat = endian;

    if procHeaderreadFileHeader(obj);

    end

    if procHeader && procTraceHeaderreadTraceHeader(obj);

    endend

    function fh = readFileHeader(obj)%READFILEHEADER reads SEG Y header information

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migrateExample.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/setup.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/travelTimeMemmap.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegyMemmap.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/rtm2d.mhttp://www.mathworks.com/matlabcentral/answers/index/?s_tid=gn_mlc_anhttp://www.mathworks.com/matlabcentral/newsreader/?s_tid=gn_mlc_nghttp://www.mathworks.com/matlabcentral/linkexchange/?s_tid=gn_mlc_lxhttp://blogs.mathworks.com/?s_tid=gn_mlc_blghttp://www.mathworks.com/matlabcentral/trendy/?s_tid=gn_mlc_tndhttp://www.mathworks.com/matlabcentral/cody/?s_tid=gn_mlc_codyhttp://www.mathworks.com/matlabcentral/contest/?s_tid=gn_mlc_cnhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/all_fileshttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/setup.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/saltModelMigrationRTM.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/gpu/build.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migrateExample.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/travelTimeMemmap.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SeismicFileReader.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegyMemmap.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReader.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/Seg2FileReader.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/shotRecordLocator.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/shot2RecTime.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/seismic.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/gpu/rtm2d_gpu.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/rtm2d.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/ricker.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/ray2d.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/plotProgress.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/migrate.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/ibm2ieee.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/gpu/fm2d_gpu.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/migration/fm2d.mhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/html/faultModelMigrationRTM.htmlhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/html/README.htmlhttp://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-studyhttp://www.mathworks.com/matlabcentral/fileexchange/help_license#bsdhttp://www.mathworks.com/matlabcentral/fileexchange/view_license?file_info_id=30585http://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/30585/versions/1/download/ziphttp://www.mathworks.com/matlabcentral/profile/authors/726228-stuart-kozolahttp://www.mathworks.com/?s_tid=gn_mlc_mainhttp://www.mathworks.com/matlabcentral/contest/?s_tid=gn_mlc_cnhttp://www.mathworks.com/matlabcentral/cody/?s_tid=gn_mlc_codyhttp://www.mathworks.com/matlabcentral/trendy/?s_tid=gn_mlc_tndhttp://blogs.mathworks.com/?s_tid=gn_mlc_blghttp://www.mathworks.com/matlabcentral/linkexchange/?s_tid=gn_mlc_lxhttp://www.mathworks.com/matlabcentral/newsreader/?s_tid=gn_mlc_nghttp://www.mathworks.com/matlabcentral/answers/index/?s_tid=gn_mlc_anhttp://www.mathworks.com/matlabcentral/fileexchange/?s_tid=gn_mlc_fxhttps://www.mathworks.com/accesslogin/index_fe.do?uri=http%3A%2F%2Fwww.mathworks.com%2Fmatlabcentral%2Ffileexchange%2F30585-large-data-in-matlab--a-seismic-data-processing-case-study%2Fcontent%2FfileReader%2FSegYFileReader.mhttps://www.mathworks.com/accesslogin/createProfile.do?uri=http%3A%2F%2Fwww.mathworks.com%2Fmatlabcentral%2Ffileexchange%2F30585-large-data-in-matlab--a-seismic-data-processing-case-study%2Fcontent%2FfileReader%2FSegYFileReader.m
  • 7/25/2019 File Exchange - MATLAB Central

    2/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    = ,% 3200 bytes textual header, the 400 byte binary header, and option 3200% byte textual headers.%% Example: TODO%% See also SEGYFILEREADER, READTAPEHEADER, READTAPEDATA

    % read in the optional header if present% Is there a optional file header?fmt = {'uchar',{128,'TapeLabel'}};fh = readFileHeader@SeismicFileReader(obj,fmt);tapeHeader = char(fh.TapeLabel');

    % if SYX.X is present, this file contains an optional headerif strcmpi('SY',tapeHeader(5:6))obj.TapeLabel.StorageUnitSeqNumber = tapeHeader(1:4);obj.TapeLabel.SEGYRevision = tapeHeader(5:9);obj.TapeLabel.StorageUnitStructure = tapeHeader(10:15);obj.TapeLabel.BindingEdition = tapeHeader(16:19);obj.TapeLabel.MaxBlockSize = tapeHeader(20:29);obj.TapeLabel.ProducerOrganizationCode = tapeHeader(30:39);obj.TapeLabel.CreationDate = tapeHeader(40:50);obj.TapeLabel.SerialNumber = tapeHeader(51:62);obj.TapeLabel.Reserved = tapeHeader(63:68);obj.TapeLabel.StorageSetIdentifier = tapeHeader(69:128);

    elseobj.TapeLabel = 'None';

    end

    % if present, set the offset to account for itif isstruct(obj.TapeLabel)

    offset = 128;else

    offset = 0;end

    % read in the 3200 byte required headerfmt = {'uchar',{3200,'TextHeader'}};fh = readFileHeader@SeismicFileReader(obj,fmt,offset);obj.FileHeader.TextualHeader = char(fh.TextHeader');

    % read in the 400 Byte binary headeroffset = offset + 3200;fmt = {'int32',{'JobID','LineNumber','ReelNumber'};

    'int16',{'DataTracePerEnsemble',...'AuxillaryTracePerEnsemble',...'SamplingTimeInMicroSec',...'OrigninalSamplingTime',...'NumberOfSamples','OriginalNumberOfSamples',...'SampleFormatCode','EnsembleFold',...'TraceSorting','VerticalSumCode',...'SweepFreqencyStart','SweepFrequencyEnd',...'SweepLength','SweepType','SweepChannel',...'SweepTaperLengthStart',...'SweepTaperLengthEnd','TaperType',...'CorrelatedTraces','BinaryGain',...'AmplitudeRecovery','MeasurementSystem',...'ImpulsePolarity','VibratoryPolarity'};

    'int16',{120,'Unassigned1'};'int16',{'RevisionNumber','FixedLengthTraceFlag',...

    'NumberOfExtendedTextualHeaders'};'int16',{94,'Unassigned2'}};

    fh = readFileHeader@SeismicFileReader(obj,fmt,offset);obj.FileHeader.BinaryHeader = fh;

    % Verify SEG Y supported revisionv = obj.FileHeader.BinaryHeader.RevisionNumber;if v > 257

    error('SegYFileReader:UnsupportedVersion',...'Version number found in file is %2.2f. Supported versions are up tonum2str(v/10));

    elseobj.FileFormat = ['SEG Y Version ',num2str(v/10)];

    end

    % Set number of tracesobj.NumberOfTraces = obj.FileHeader.BinaryHeader.DataTracePerEnsemble;

    offset = offset+400;

    % Read Extended 3200 byte textual headers if presentfor i = 1:obj.FileHeader.BinaryHeader.NumberOfExtendedTextualHeaders;

    ' ' ' '

  • 7/25/2019 File Exchange - MATLAB Central

    3/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    = , ,fh = readFileHeader@SeismicFileReader(obj,fmt,offset);obj.FileHeader.ExtendedTextualHeader(i) = char(fh.TextHeader');offset =offset+3200;

    end

    % Validate input selectionsswitch obj.FileHeader.BinaryHeader.SampleFormatCode

    case 1 % 4byte IBM floatingpointobj.FileHeader.TraceFormat = 'uint';mult = 4;

    case 2 % 4byte two's complement integerobj.FileHeader.TraceFormat = 'int32';

    mult = 4;case 3 % 2byte two's complement integerobj.FileHeader.TraceFormat = 'int16';mult = 2;

    case 4 % 4byte fixed point with gain (obsolete)obj.FileHeader.TraceFormat = 'int32';mult = 4;

    case 5 % 4byte IEEE floatingpointobj.FileHeader.TraceFormat = 'float32';mult = 4;

    case 8 % 1byte two's complement integerobj.FileHeader.TraceFormat = 'int8';mult = 1;

    otherwisewarning('Couldn''t determine data format, assuming float 32');obj.FileHeader.TraceFormat = 'float32';mult = 4;

    end

    % Store trace offset pointersfmt = {'int16',{1,'NumberOfSamples'}};fh = readFileHeader@SeismicFileReader(obj,fmt,offset+114);traceSize = fh.NumberOfSamples*mult + 240;mxTraces = ceil((obj.FileSize offset)/traceSize);obj.FileHeader.TracePointers = zeros(mxTraces,1);obj.FileHeader.TracePointers(1) = offset;% check to see if all traces are of equal sizeif obj.FileHeader.BinaryHeader.FixedLengthTraceFlag == 1

    % all are the same size so build pointersi = 1:(mxTraces+1);obj.FileHeader.TracePointers = [(i1)*traceSize + offset]';obj.NumberOfTraces = mxTraces;

    else % traces could be different sizesi = 1;

    while (offset

  • 7/25/2019 File Exchange - MATLAB Central

    4/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    ,'int16',{'ElevationOrDepthScalar','CoordinateScalar'};'int32',{'SourceX','SourceY','GroupX','GroupY'};'int16',{'CoordinateUnits','WeatheringVelocity',...

    'SubweatheringVelocity',...'SourceUpholeTime_ms','GroupUpholeTime_ms',...'SourceStaticCorrection_ms',...'GroupStaticCorrection_ms',...'TotalStaticApplied_ms',...'ALagTime_ms','BLagTime_ms',...'RecordingDelay_ms',...'MuteTimeStart_ms','MuteTimeEnd_ms',...'NumberOfSamples',...'SampleInterval_ms',...

    'GainType','GainConstant_dB',...'InitialGain_dB','Correlated',...'SweepFrequencyStart_Hz',...'SweepFrequencyEnd_Hz',...'SweepLength_ms','SweepType',...'SweepTaperLengthStart_ms',...'SweepTaperLengthEnd_ms',...'TaperType','AliasFilter_Hz',...'AliasSlope_dBperOctave',...'NotchFilterFrequency_Hz',...'NotchFilterSlope_dBperOctave',...'LowCutFrequency_Hz',...'HighCutFrequency_Hz',...'LowCutSlope_dBperOctave',...'HighCutSlope_dBperOctave',...'Year','Day','Hour','Minute','Second',...'TimeBasisCode','WeightingFactor',...'GeophoneGroupNumberRoll1',...

    'GeophoneGroupNumberFirstTraceOriginalRecord',...'GeophoneGroupNumberLastTraceOriginalRecord',...'GapSize','OverTravel'};

    'int32',{'EnsembleX','EnsembleY','InLineNumber3D',...'CrossLineNumber3D','ShotPointNumber'};

    'int16',{'ShotPointScalar','TraceMeasurementUnit'};'int32',{1,'TransductionConstantMantissa'};'int16',{'TransductionConstantExponent',...

    'TranductionUnits','TraceIdentifier',...'TimeScalar','SourceTypeOrientation'};

    'bit48',{1,'SourceEnergyDirection'};'int32',{1,'SourceMeasurementMantissa'};'int16',{'SourceMeasurementExponent',...

    'SourceMeasurementUnit'};'int16',{4,'Unassigned'}};

    for t = 1:length(traceNumber)offset = obj.FileHeader.TracePointers(traceNumber(t));f = readTraceHeader@SeismicFileReader(obj,fmt,offset);th(t) = f;

    end

    if nargout == 0 % add to object if no output requestedobj.TraceDescription = th;

    endend % readTraceHeader

    function [td,th] = readTraceData(obj,traceNumber,td)if nargin == 1 || isempty(traceNumber)

    traceNumber = 1:obj.NumberOfTraces;end

    % get 1st trace size to determine initial array sizeth = readTraceHeader(obj,1);

    r = th.NumberOfSamples;c = length(traceNumber);

    % create as distributed array if requestedif nargin > 2 && license('test','distrib_computing_toolbox')

    td = distributed.nan(r,c);else

    trytd = nan(r,c);

    catche = lasterror;

    if strcmpi(e.identifier,'MATLAB:nomem')% test maximum array sizeu = memory;str = ['\n\tCould not allocate an array of ',...

    num2str(r*c*8),'bytes. Available memory is: \n',...u.MaxPossibleArrayBytes,...'\tTry declaring as a distributed array:\n\t\t',...

    ' '

  • 7/25/2019 File Exchange - MATLAB Central

    5/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    = rea race a a o , race um ers, s r u e ;e.message = sprintf([e.message,str]);

    endrethrow(e)

    end

    end

    for t = 1:length(traceNumber)% read the trace header informationth(t) = readTraceHeader(obj,traceNumber(t));

    % need to account for variable length data (NaNs)n = th(t).NumberOfSamples;

    % since r is sized by the first data set, it should never% be smaller than this, we only need to test for the case% where it is greater

    %if th(t).NumberOfSamples > r% th(end:end+n,:) = NaN;%end

    % get trace data and fill preallocated arrayfmtCode = obj.FileHeader.TraceFormat;fmt = {fmtCode, th(1).NumberOfSamples};offset = obj.FileHeader.TracePointers(traceNumber(t)) + ...

    240; % offset for trace binary header% account for ibm floating pointif obj.FileHeader.BinaryHeader.SampleFormatCode == 1

    td(:,t) = ibm2ieee(readTraceData@SeismicFileReader(obj,fmt,offset));else

    td(:,t) = readTraceData@SeismicFileReader(obj,fmt,offset);

    endend % for loop

    end % readTraceData

    function txt = parseTextBlock(obj,textBlock)% parse out text block datatxt = [];

    % extract keywords[keys,idx] = regexp(textBlock, '[AZ_]\w*', 'match','start');% check validity[~,idx] = obj.validKeys(keys,idx);

    % remove 1st two bytes (offsets) in file from keywords% and last offset bytestextBlock([idx2, idx1,end1:end]) = [];

    % extract keywords with new index locations

    [keys,idx] = regexp(textBlock, '[AZ_]\w*', 'match','end');% check validity[keys,idx] = obj.validKeys(keys,idx);

    for i = 1:length(idx)if i < length(idx)

    str = textBlock((idx(i)+1):(idx(i+1)length(keys{i+1})));else

    str = textBlock((idx(i)+1):end);end% check if it is a date or time stringif isempty(strfind(str,':')) && isempty(strfind(str,'\'))

    tmpStr = str2num(str);else

    tmpStr = deblank(strtrim(str));endif isempty(tmpStr)

    % If only whitespaces don't add

    if ~isempty(strtok(str,char(0)))txt.(keys{i}) = deblank(strtrim(str));

    endelse

    txt.(keys{i}) = tmpStr;end

    end % forend % parseTextBlock

    function varargout = subsref(obj,s)if numel(obj) > 1

    if length(s) > 1obj = obj(s(1).subs{:});varargout{1} = subsref(obj,s(2:end));

    elsevarargout{1} = obj(s.subs{:});

    endelse

    ' '

  • 7/25/2019 File Exchange - MATLAB Central

    6/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    s rcmp s 1 . ype,if length(s) > 1

    error('SeismicFileReader:InvalidIndexing','This index operation iendif strcmpi(s.subs{2},':')

    ind = [];else

    ind = s.subs{2};endtmp = readTraceData(obj,ind);varargout{1} = tmp(s.subs{1},:);

    elseif strcmp(s.type,'.')varargout{1} = obj.(s.subs);

    end

    endend % subsref

    end % methods

    methods (Static)

    function [keys,idx] = validKeys(keys,idx)% check valid keysvalidKey = {'ACQUISITION_DATE',... % file header

    'ACQUISITION_TIME',...'CLIENT',...'COMPANY',...'GENERAL_CONSTANT',...'INSTRUMENT',...'JOB_ID',...'OBSERVER',...'PROCESSING_TIME',...'TRACE_SORT',...

    'UNITS',...'NOTE',...

    'ALIAS_FILTER',... % trace header'AMPLITUDE_RECOVERY',...'BAND_REJECT_FILTER',...'CDP_NUMBER',...'CDP_TRACE',...'CHANNEL_NUMBER',...'DATUM',...'DELAY',...'DESCALING_FACTOR',...'DIGITAL_BAND_REJECT_FILTER',...'DIGITAL_HIGHT_CUT_FILTER',...'DIGITAL_LOW_CUT_FILTER',...'END_OF_GROUP',...'FIXED_GAIN',...'HIGH_CUT_FILTER',...

    'LINE_ID'...'LOW_CUT_FILTER',...'NOTCH_FREQUENCY',...'POLARITY',...'RAW_RECORD',...'RECEIVER',...'RECEIVER_GEOMETERY',...'RECEIVER_LOCATION',...'RECEIVER_SPECS',...'RECEIVER_STATION_NUMBER',...'SAMPLE_INTERVAL',...'SHOT_SEQUENCE_NUMBER',...'SKEW',...

    'SOURCE',...'SOURCE_GEOMETRY',...'SOURCE_LOCATION',...'SOURCE_STATION_NUMBER',...'STACK',...

    'STATIC_CORRECTIONS',...'TRACE_TYPE',...'UNIT',...% nonspec keywords below'ACQUISITION_SECOND_FRACTION'};

    lidx = ismember(keys,validKey);keys = keys(lidx);idx = idx(lidx);

    end % validKeys

    end % Static methods

    end % Seg2FileReader Class

  • 7/25/2019 File Exchange - MATLAB Central

    7/7

    12/24/2015 File Exchange - MATLAB Central

    http://www.mathworks.com/matlabcentral/fileexchange/30585-large-data-in-matlab--a-seismic-data-processing-case-study/content/fileReader/SegYFileReade

    Patents Trademarks Privacy Policy Preventing Piracy Terms of Use

    Featured MathWorks.com Topics: New Products Support Documentation Training Webinars Newsletters MATLAB Trials Care

    Contact us

    1994-2015 The MathWorks, Inc.

    http://www.mathworks.com/company/feedback/http://www.mathworks.com/company/jobs/opportunities/index_en_US.htmlhttp://www.mathworks.com/programs/trials/trial_request.html?prodcode=ML&s_cid=MLC_trialshttp://www.mathworks.com/company/newsletters/http://www.mathworks.com/company/events/webinars/http://www.mathworks.com/services/training/http://www.mathworks.com/helphttp://www.mathworks.com/support/http://www.mathworks.com/products/new_products/latest_features.htmlhttp://www.mathworks.com/matlabcentral/termsofuse.html?s_tid=gf_com_trmhttp://www.mathworks.com/company/aboutus/policies_statements/piracy.html?s_tid=gf_pirhttp://www.mathworks.com/company/aboutus/policies_statements/?s_tid=gf_privhttp://www.mathworks.com/company/aboutus/policies_statements/trademarks.html?s_tid=gf_trdhttp://www.mathworks.com/company/aboutus/policies_statements/patents.html?s_tid=gf_pathttp://www.mathworks.com/programs/bounce_hub_generic.html?s_tid=mlc_twt&url=http://www.twitter.com/MATLABhttp://www.mathworks.com/programs/bounce_hub_generic.html?s_tid=mlc_fbk&url=http://www.facebook.com/MATLABhttp://www.mathworks.com/programs/bounce_hub_generic.html?s_tid=mlc_fbk&url=https://plus.google.com/117177960465154322866?prsrc=3http://www.mathworks.com/programs/bounce_hub_generic.html?s_tid=mlc_lkd&url=http://www.linkedin.com/company/the-mathworks_2http://www.mathworks.com/company/rss/