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

📄 s_filter.m

📁 实现地震勘探中
💻 M
字号:
function seismic=s_filter(seismic,varargin)% Function filters seismic input data%% Written by: E. R.: May, 2001% Last updated: December 5, 2005: check for trace nulls and remove them%%            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%% EXAMPLE%       seismic=s_data;%       fseismic=s_filter(seismic,{'ormsby',0,10,15,30});%       fseismic.name='Filtered test data';%       s_compare(seismic,fseismic)%       s_spectrum(seismic,fseismic,{'frequencies',0,80})%    	Set default valuesparam.ormsby=[];%   	Decode and assign input argumentsparam=assign_input(param,varargin,'s_filter');if isnull(seismic)   seismic=s_rm_trace_nulls(seismic);endfields=fieldnames(param);idx=ismember_ordered(fields,{'ormsby'});if ~isempty(idx)   option=fields{idx(1)};else   error(' No filter type specified')endswitch optioncase 'ormsby'if isempty(param.ormsby)   error(' No filter parameters specified')end%       Retrieve and check corner frequencies of Ormsby filterif ~iscell(param.ormsby)   freq=param.ormsby;else   freq=cell2num(param.ormsby);endftext=num2str(reshape(freq,1,[]));if any(diff(freq) < 0)   error([' The corner frequencies for the Ormsby filter are not monotonic: ',ftext]);end%       Handle big data sets by dividing them in smaller chunksntr=size(seismic.traces,2);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;   endelse   seismic.traces=ormsby_filter(seismic.traces,seismic.step,freq);endftext=[' with corner frequencies ',ftext];otherwisedisp([' Unknown FILTER option: ',option])end	% End of switch blockseismic.name=[seismic.name,' - filtered'];%       Append history fieldhtext=[option, ftext];seismic=s_history(seismic,'append',htext);

⌨️ 快捷键说明

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