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

📄 refracproject.m

📁 地震解释处理matlab工具箱
💻 M
字号:
% Saves or loads a Refraction Statics project

function refracproject(action)

if( nargin < 1 )
   error('refracproject: needs an action');
end

% Ask for filename
[filename,path] = myuifile(gcf, '*.mat', 'Save/Load project', 'put');
if( ~isempty(filename) )
	if( filename == 0 )
  	 return;
	end
end

ind = findstr(filename,'.mat');
if(strcmp(computer,'MAC2'))
%   fullfilename=filename(1:ind(1)-1);
   fullfilename=filename;
else
%   fullfilename=[path filename(1:ind(1)-1)];
   fullfilename=[path filename];
end

% The current project is saved using a 'container object' which is
% one big matrix holding all the data saved in 'refdata'.

if( strcmp(action, 'save') )
   if(~isempty(ind))
      % Trim off the '.mat' at the end of the file.
      filename = filename(1:ind-1);
      fullfilename = [path filename];
   end

   % Build an array holding all of the useful single-value parameters
   pa(1) = refdata('get','rtrange');
   pa(2) = refdata('get','rtpair1');
   pa(3) = refdata('get','rtpair2');
   pa(4) = refdata('get','mint');
   pa(5) = refdata('get','aprange');
   pa(6) = refdata('get','appair1');
   pa(7) = refdata('get','appair2');
   pa(8) = refdata('get','apsub');
   pa(9) = refdata('get','rtmax');
   pa(10) = refdata('get','window');
   pa(11) = refdata('get','nshots');
   pa(12) = refdata('get','nrecs');
   pa(13) = refdata('get','dev');
   pa(14) = refdata('get','standard');
   pa(15) = refdata('get','plustreject');
   pa(16) = refdata('get','datum');
   pa(17) = refdata('get','repvel');
   pa(18) = refdata('get','nd');
   pa(19) = refdata('get','shotgap');
   pa(20) = refdata('get','shotlength');
   pa(21) = refdata('get','flatslope');
   pa(22) = refdata('get','windmn');
   pa(23) = refdata('get','offsetrange1');
   pa(24) = refdata('get','offsetrange2');
   pa(25) = refdata('get','offsetpt');   

   % Build a container object to hold all this stuff
   % This little bit of code is optimized to minimize memory requirments.
   box = contobj('Refrac-proj','list');
   box = objset(box, 'parmlist', pa, 'rvec');

   fbtime = refdata('get','fbtime');
   box = objset(box, 'fbtime', fbtime);
   disp('Adding to box...');
   clear fbtime;
   
   fbcoord = refdata('get','fbcoord');   
   box = objset(box, 'fbcoord', fbcoord);
   disp('Adding to box...');
   clear fbcoord;
   
   shotcoord = refdata('get','shotcoord');   
   box = objset(box, 'shotcoord', shotcoord);
   disp('Adding to box...');
   clear shotcoord;
   
   diffmat = refdata('get','diffmat');
   box = objset(box, 'diffmat', diffmat);
   disp('Adding to box...');
   clear diffmat;

   cvpi = refdata('get','cvpi');
   box = objset(box, 'cvpi', cvpi);
   disp('Adding to box...');
   clear cvpi;

   cvpj = refdata('get','cvpj');   
   box = objset(box, 'cvpj', cvpj);
   disp('Adding to box...');
   clear cvpj;

   cvpavg = refdata('get','cvpavg');   
   box = objset(box, 'cvpavg', cvpavg);
   disp('Adding to box...');
   clear cvpavg;

   v1rec = refdata('get','v1rec');
   box = objset(box, 'v1rec', v1rec);
   disp('Adding to box...');
   clear v1rec;

   v2rec = refdata('get','v2rec');
   box = objset(box, 'v2rec', v2rec);
   disp('Adding to box...');
   clear v2rec;

   depth = refdata('get','depth');
   box = objset(box, 'depth', depth);
   disp('Adding to box...');
   clear depth;

   td1 = refdata('get','td1');
   box = objset(box, 'td1', td1);
   disp('Adding to box...');
   clear td1;

   plust = refdata('get','plust');
   box = objset(box, 'plust', plust);
   disp('Adding to box...');
   clear plust;

   shotelev = refdata('get','shotelev');
   box = objset(box, 'shotelev', shotelev);
   disp('Adding to box...');
   clear shotelev;

   recelev = refdata('get','recelev');
   box = objset(box, 'recelev', recelev);
   disp('Adding to box...');
   clear recelev;

   uphole = refdata('get','uphole');
   box = objset(box, 'uphole', uphole);
   disp('Adding to box...');
   clear uphole;

   shotstat = refdata('get','shotstat');
   box = objset(box, 'shotstat', shotstat);
   disp('Adding to box...');
   clear shotstat;

   recstat = refdata('get','recstat');
   box = objset(box, 'recstat', recstat);
   disp('Adding to box...');
   clear recstat;

   refracprojectobj = box;
   disp('Saving box to disk...');
   eval([ 'save ' fullfilename ' refracprojectobj'; ]);
   disp('Done saving box...');
end

if( strcmp(action, 'load') )
   if( isempty(filename) | filename == 0 )
      error('refracprojct: No filename given for load');
   end

   ind=findstr(filename, '.mat');
   if( length(ind)>0 )
      filename=filename(1:ind-1);
   else
      disp('Selected file must be a previously saved project');
      disp('and it must have a .mat extension on the file name');
      error(' invalid file extension');
   end
   fullfilename = [path filename];

   clear refracprojectobj;
   eval([ 'load ' fullfilename ] );
   box = refracprojectobj;

   if( ~isearthobj(box) )
      str = sprintf('refracproject: Invalid project file: %s', filename );
      error(str);
   end

   % Default all global parameters 
   refdata('clear');

   pa = objget(box, 'parmlist');
   fbtime = objget(box, 'fbtime');
   fbcoord = objget(box, 'fbcoord');
   shotcoord = objget(box, 'shotcoord');
   diffmat = objget(box, 'diffmat');
   cvpi = objget(box, 'cvpi');
   cvpj = objget(box, 'cvpj');
   cvpavg = objget(box, 'cvpavg');
   v1rec = objget(box, 'v1rec');
   v2rec = objget(box, 'v2rec');
   depth = objget(box, 'depth');
   td1 = objget(box, 'td1');
   plust = objget(box, 'plust');
   shotelev = objget(box, 'shotelev');
   recelev = objget(box, 'recelev');
   uphole = objget(box, 'uphole');
   shotstat = objget(box, 'shotstat');
   recstat = objget(box, 'recstat');

   if( length(pa) == 25 )
      refdata('set', 'rtrange', pa(1) );
      refdata('set', 'rtpair1', pa(2) );
      refdata('set', 'rtpair2', pa(3) );
      refdata('set', 'mint', pa(4) );
      refdata('set', 'aprange',pa(5));
      refdata('set', 'appair1', pa(6) );
      refdata('set', 'appair2', pa(7) );
      refdata('set', 'apsub', pa(8) );
      refdata('set', 'rtmax', pa(9) );
      refdata('set', 'window', pa(10) );
      refdata('set', 'nshots', pa(11) );
      refdata('set', 'nrecs', pa(12) );
      refdata('set', 'dev', pa(13) );
      refdata('set', 'standard', pa(14) );
      refdata('set', 'plustreject', pa(15) );
      refdata('set', 'datum', pa(16) );
      refdata('set', 'repvel', pa(17) );
      refdata('set', 'nd', pa(18) );
      refdata('set', 'shotgap', pa(19) );
      refdata('set', 'shotlength', pa(20) );
      refdata('set', 'flatslope', pa(21) );
      refdata('set', 'windmn', pa(22) );
      refdata('set', 'offsetrange1', pa(23) );
      refdata('set', 'offsetrange2', pa(24) );
      refdata('set', 'offsetpt', pa(25) );
   else
      fprintf(1,'WARNING: old project file loaded. Processing parameters set to default values..\n');
      nshots = length(shotcoord);
      nrecs = length(recelev);
      refdata('set', 'nshots', nshots );
      refdata('set', 'nrecs', nrecs );
   end

   refdata('set', 'fbtime', fbtime);
   refdata('set', 'fbcoord', fbcoord);
   refdata('set', 'shotcoord', shotcoord);
   refdata('set', 'diffmat', diffmat);
   refdata('set', 'cvpi', cvpi);
   refdata('set', 'cvpj', cvpj);
   refdata('set', 'cvpavg', cvpavg);
   refdata('set', 'v1rec', v1rec);
   refdata('set', 'v2rec', v2rec);
   refdata('set', 'td1', td1);
   refdata('set', 'plust',plust);
   refdata('set', 'depth', depth);
   refdata('set', 'shotelev', shotelev);
   refdata('set', 'recelev', recelev);
   refdata('set', 'uphole', uphole);
   refdata('set', 'shotstat', shotstat);
   refdata('set', 'recstat', recstat);

   % Enable all the menus
   PMTsetmenus;
end

⌨️ 快捷键说明

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