📄 s_3d_spliced_synthetic.m
字号:
function [icombi,xcombi,syn,aux]=s_3d_spliced_synthetic(seismic,wavelet,refl,varargin)% Function creates display of seismic data with spliced-in synthetic% Also computes trace-to-trace correlations for in-line and cross-line% Written by: E. R.; January 6, 2001% Last updated: June 5, 2004: Removed spectrum computation; added output of figure handles%% [icombi,xcombi,syn,aux]=s_3d_spliced_synthetic(seismic,wavelet,refl,varargin)% INPUT% seismic seismic data set % wavelet wavelet to use; it is assumed that wavelet and seismic data have headers% defined via keyword 'headers' % refl reflection coefficient series% varargin one or more cell arrays; the first element of each cell array is a keyword% string, the following arguments contain(s a) parameter(s). % Accepted keywords are:% 'frequencies' first and last frequency to display in spectrum plot% Default: {'frequencies',0,fny} where "fny" denotes the% Nyquist frequency% 'headers' headers of seismic to use to locate well on seismic lines% 'mark' mark range of reliabily of synthetic by red vertical bars along% vertical axis. The range of reliability is the time interval% for which the synthetic does not need data outside the% reflevtion coefficient interval.% Default: {'mark','yes'}% 'orient' orientation of seismic plot; possible values are 'portrait' and 'landscape'.% Default: {'orient','portrait'}% 'quality' quality of seismic display; posssible values are 'high' and 'draft'% Default: {'quality','high'}% 'scale' 2-element cell array which specifies if traces should be scaled individually.% Possible values are 'yes', 'no', or the actual scale. This may be a scalar or a% vector whose number of elements is equal to the number of traces.% separation. The scale actually used must be obtained by specifying the output% argument "aux".% Default: {'scale','no'}% 'times' start and end time of displayed seismic traces% Default: {'times',ta,te} where "ta" is the greatest multiple of 100% less than the start time of the synthetic and "te" is the smallest% multiple of 100 greate than the end time of the synthetic% 'traces' number of synthetics spliced in.% Default: {'traces',3}% OUTPUT% icombi seismic in-line with spliced-in synthetics% xcombi seismic cross-line with spliced-in synthetics% syn synthetic% aux structure with figure handles% 'figure_handles' Figure handles of inline plot, cross-line plot, and % trace-to-trace discrepancy% global S4M% Compute syntheticsyn=s_convolve(wavelet,refl);% Set defaults for input parametersparam.frequencies={0,500/seismic.step};param.headers={'iline_no','xline_no'};param.mark='yes';param.orient='portrait';param.quality='high';param.scale='no';param.times={floor(syn.first/100)*100,ceil(syn.last/100)*100};param.traces=3;% Decode and assign input argumentsparam=assign_input(param,varargin);% Prepare synthetics for being spliced into seismicsyns=s_select(syn,{'traces',ones(param.traces,1)});% Find in-line number and cross-line number of best-matching waveletsheader1=s_gh(wavelet,param.headers{1});header2=s_gh(wavelet,param.headers{2});%iline=s_select(seismic,{'traces',[param.headers{1},' == ',num2str(header1)]});iline=s_select(seismic,{'traces',param.headers{1},header1});xline=s_select(seismic,{'traces',param.headers{2},header2});% Plot seimic line with first header with spliced-in syntheticiindex=s_trace_numbers(iline,param.headers{2},header2);if iindex == size(iline.traces,2) iindex=iindex-1; endicombi=s_append(s_select(iline,{'traces',1:iindex}),syns);icombi=s_append(icombi,s_select(iline,{'traces',iindex+1,inf}));iplot_title=[s_gd(seismic,param.headers{1}),' ',num2str(header1),' with synthetic'];aux1=s_iplot(icombi,{'times',param.times{1},param.times{2}},{'annotation','xline_no'}, ... {'orient',param.orient},{'title',iplot_title},{'quality',param.quality}, ... {'scale',param.scale});if strcmp(param.mark,'yes') wtime=wavelet.last-wavelet.first; ta=syns.first+wtime; te=syns.last-wtime; hold on v=axis; plot(v([1,1]),[ta,te],'r','Linewidth',5) plot(v([2,2]),[ta,te],'r','Linewidth',5)end% Plot seimic line with second header with spliced-in syntheticxindex=s_trace_numbers(xline,param.headers{1},header1);if xindex == size(xline.traces,2) xindex=xindex-1; endxcombi=s_append(s_select(xline,{'traces',1:xindex}),syns);xcombi=s_append(xcombi,s_select(xline,{'traces',xindex+1,inf}));xplot_title=[s_gd(seismic,param.headers{2}),' ',num2str(header2),' with synthetic'];aux2=s_iplot(xcombi,{'times',param.times{1},param.times{2}},{'annotation','iline_no'}, ... {'orient',param.orient},{'title',xplot_title},{'quality',param.quality}, ... {'scale',param.scale});if strcmp(param.mark,'yes') v=axis; hold on plot(v([1,1]),[ta,te],'r','Linewidth',5) plot(v([2,2]),[ta,te],'r','Linewidth',5)end% Plot trace-to-trace correlationsntr=size(icombi.traces,2);temp1=s_select(icombi,{'times',max([iline.first,ta]),min([iline.last,te])}, ... {'traces',1:ntr-1});temp2=s_select(icombi,{'times',max([iline.first,ta]),min([iline.last,te])}, ... {'traces',2:ntr});icorr=s_correlate(temp1,temp2,{'option','corresponding'},{'normalize','traces'},{'lags',0,0});ntr=size(xcombi.traces,2);temp1=s_select(xcombi,{'times',max([xline.first,ta]),min([xline.last,te])}, ... {'traces',1:ntr-1});temp2=s_select(xcombi,{'times',max([xline.first,ta]),min([xline.last,te])}, ... {'traces',2:ntr});xcorr=s_correlate(temp1,temp2,{'option','corresponding'},{'normalize','traces'},{'lags',0,0});fig_handle=pfigure;subplot(2,1,1)plot(icorr.traces,'r','LineWidth',2)vv=axis;axis([vv(1:2),0,1]);title(iplot_title)grid on, zoom onsubplot(2,1,2)plot(xcorr.traces,'r','LineWidth',2)vv=axis;axis([vv(1:2),0,1]);title(xplot_title)timeStampgrid on, zoom onmysuptitle('Trace-to-trace correlation for in-line and cross-line')figure_export_menu(fig_handle)if nargout > 3 aux.figure_handles=[aux1.figure_handle,aux2.figure_handle,fig_handle];end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -