Upload
abdhafidz1
View
247
Download
0
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.m7/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/