📄 add_header.m
字号:
function dataset=add_header(dataset,values,info,replace)% Add one or more headers to a seismic or a pseudo-well dataset.%% Written by: E. R.: April 28, 2006% Last updated: February 2, 2008: bug fix%% dataset=add_header(dataset,values,info,replace)% INPUT% dataset seismic or pseudo-well dataset% values row vector or matrix of header values; there must be as many % columns as there are traces in the seismic dataset or pseudo-wells % in the pseudo-well dataset% However, if the header values are constant, only this constant% need to be specified (see example below).% info three-column cell array; one row per header% The first column contains the header mnemonic, the second the% units of measurement, the third a description of the header.% replace logical variable; if true an existing header with the same mnemonic% will be replaced; otherwise, if a header with the same name already% exists, an error will be thrown. % Default: replace=true%% EXAMPLE% seismic=s_data;% seismic=add_header(seismic,330,{'offset','ft','Source-receiver offset'});% ds_header(seismic)global S4Mif istype(dataset,'seismic') ntr=size(dataset.traces,2);elseif istype(dataset,'pseudo-wells') ntr=panelsize(dataset,2);else error('The first input argument must be a seismic dataset or a pseudo-well dataset.')end% Check input arguments[nh,ntr1]=size(values);if size(info,1) ~= nh error(' Input arguments "values" and "info" have different number of rows.')endif size(info,2) ~= 3 error('Cell array with header info must have three columns.')endif ntr1 == 1 values=values(:,ones(ntr,1));elseif ntr1 ~= ntr disp({'The number columns of input argument "values" must be either equal to 1'; ... ['or must be equal to ',num2str(ntr)]}) error('Abnormal termination')endif isfield(dataset,'header_info') existing_headers=dataset.header_info(:,1); new_headers=info(:,1); if S4M.case_sensitive [dummy,idx1,idx2]=intersect(existing_headers,new_headers); %#ok First output argument not required else [dummy,idx1,idx2]=intersect(lower(existing_headers),lower(new_headers)); %#ok First output argument not required end if isempty(idx1) dataset.header_info=[dataset.header_info;info]; dataset.headers=[dataset.headers;values]; elseif nargin > 3 && ~replace disp({['Over-writing of header values is not permissible; yet ', ... 'the following new headers']; ... ['are already present in dataset "',dataset.name,'".']}) error('Abnormal termination.') else dataset.header_info(idx1,:)=info(idx2,:); dataset.headers(idx1,:)=values(idx2,:); idx=find(~ismember(1:nh,idx2)); if ~isempty(idx) dataset.header_info=[dataset.header_info;info(idx,:)]; dataset.headers=[dataset.headers;values(idx,:)]; end endelse dataset.header_info=info; dataset.headers=values;end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -