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

📄 s_filter.m

📁 地震、测井方面matlab代码,解释的比较详细
💻 M
字号:
function seismic=s_filter(seismic,varargin)
% Function filters seismic input data
% Written by: E. R.
% Last updated: January 10, 2005: break big data sets down into smaller ones before filtering
%
%            seismic=s_filter(seismic,varargin)
% INPUT
% seismic    seismic structure
% varargin   one or more cell arrays; the first element of each cell array is a keyword,
%            the other elements are parameters. Presently, keywords are:
%        'ormsby'    Ormsby filter with corner frequencies f1,f2,f3,f4. The 
%              corner frequencies must satisfy the condition 0 <= f1 <= f2 <= f3 <= f4.
%              General form: {'ormsby',f1,f2,f3,f4}     or
%                            {'ormsby',[f1,f2,f3,f4]}
%              no default
% OUTPUT
% seismic     seismic structure after filtering

%    	Set default values
param.ormsby=[];

%   	Decode and assign input arguments
param=assign_input(param,varargin,'s_filter');

fields=fieldnames(param);
idx=ismember_ordered(fields,{'ormsby'});
if length(idx) > 0
   option=fields{idx(1)};
else
   error(' No filter type specified')
end

switch option

               case 'ormsby'

if isempty(param.ormsby)
   error(' No filter parameters specified')
end

%       Retrieve and check corner frequencies of Ormsby filter
if ~iscell(param.ormsby)
   freq=param.ormsby;
else
   freq=cell2num(param.ormsby);
end
idx=find(diff(freq) < 0);
ftext=num2str(reshape(freq,1,[]));

if ~isempty(idx)
   error([' Corner frequencies for Ormsby filter are not monotonic: ',ftext]);
end

%       Handle big data sets by dividing them in smaller chunks
[nsamp,ntr]=size(seismic.traces);
if ntr > 1000
   ia=1;
   for ii=1:ceil(ntr/1000)
      ie=min(ia+999,ntr);
      seismic.traces(:,ia:ie)=ormsby_filter(seismic.traces(:,ia:ie),seismic.step,freq);
      ia=ie+1;
   end
else
   seismic.traces=ormsby_filter(seismic.traces,seismic.step,freq);
end
ftext=[' with corner frequencies ',ftext];

               otherwise
disp([' Unknown FILTER option: ',option])

               end

%       Append history field
if isfield(seismic,'history')
   htext=[option, ftext];
   seismic=s_history(seismic,'append',htext);
end 

seismic.name=['filtered ',seismic.name];

⌨️ 快捷键说明

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