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

📄 delaytcb.m

📁 基于matlab的反演程序,用于地球物理勘探中射线追踪及偏移成像程序.
💻 M
字号:
function delaytcb(action)

if( nargin < 1 )
   action = 'init';
end
if( strcmp(action,'init'))
   q=str2mat('Delay time analysis according to ?',...
	     'Enter the coordinate limit ?',...  
	     'Use a constant velocity for the second layer?',...
             'Enter the constant velocity (m/s):',...
	     'Autorejection of Delay times ?',...
	     'Autorejection based on constant or standard devation limit?',...
	     'Enter limit:');
   a=str2mat('CVPavg|Cte','250 7750','No|Yes','1600','Yes|No','Standard deviation|Constant limit','1')

   askthingsinit('delaytcb(''answer'')',q,a,[1 0 1 0 1 0 0],...
		 'Parameter for the Delay time analysis');

elseif( strcmp(action,'answer'))
   a=askthingsfini;
   [strings tmp] = size(a);

   if(strcmp( deblank(a(1,:)),'CVPavg'))
	cvpavg=refdata('get','cvpavg');
	ind1=find(~isnan(cvpavg(:,2)));
	s=ind1(1);
	slim=cvpavg(s,2);
	
	ind2=find(~isnan(cvpavg(:,1)));
	e=ind2(length(ind2));
	elim=cvpavg(e,1);
    else
	lim = sscanf(a(2,:), '%d %d');
	slim=lim(1);
	elim=lim(2);
    end

   if(strcmp( deblank(a(3,:)),'No'))
	v2rec=refdata('get','v2rec');
   else
	recelev=refdata('get','recelev');
	v2 = str2num(a(4,:));
	v2 = v2/1000;
        n = length(recelev);
        v2rec = v2*ones(1,n);
   end

   if(strcmp( deblank(a(5,:)),'Yes'))
	delayreject=1;
   else
	delayreject=0;
   end

   if(strcmp( deblank(a(6,:)),'standard deviation'))
	standard=1;
   else
	standard=0;
   end

   dev = str2num(a(7,:));
   refdata('set','standard',standard);

% Function calling the Delay time analysis function
  fbtime=refdata('get','fbtime');
  fbcoord=refdata('get','fbcoord');
  shotcoord=refdata('get','shotcoord');
  cvpavg=refdata('get','cvpavg');
  nshots=refdata('get','nshots');
  recelev=refdata('get','recelev');
  plust=refdata('get','plust');

delay = delayt(fbtime,fbcoord,cvpavg,v2rec,shotcoord,nshots,recelev,slim,elim,plust);

  d=length(recelev);
  for n=1:d
    good=find(~isnan(delay(:,n)));
    if (length(good)>0)
     plust(2,n)=2*mean(delay(good,n));
     plust(3,n)=length(good);
     plust(4,n)=2*std(delay(good,n));

     if (delayreject==1)
       if (standard==1)
	 f=dev * (plust(4,n))/2;
       else
	 f=dev;
       end

       d=abs(delay(good,n)-(plust(2,n))/2);
       badplust=find(d>f);
       [a b]=size(badplust);
	if (b ~=0)
	   delay(good(badplust),n)=NaN*badplust;
	   good=find(~isnan(delay(:,n))); 	  
    	   if (length(good)>0)
             plust(2,n)=2*mean(delay(good,n));
             plust(3,n)=length(good);
             plust(4,n)=2*std(delay(good,n));
	   end
	end
     end
    end
  end


  refdata('set','plust',plust);

end






⌨️ 快捷键说明

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