www.gusucode.com > EasyKrig_V3.0工具箱matlab源码程序 > EasyKrig_V3.0/general/file_browser3d.m

    function		file_browser3d(window,index,type)
%% function		file_browser3d(window,index) handles all brower pushbutton selection
% window_index = index of process task 
%            1 - Data Preparation
%            2 - Variogram
%            3 - Krig
%            2 - Visualization
% index = index for specific options
% type  = Load/Save parameter data type, only for Krig option
%            1 - Varigram parameters only
%            2 - Kriging parameters only
%            3 - Both of 1 and 2
%%
%%  Kriging Software Package  version 3.0,   May 1, 2004
%%  Copyright (c) 1999, 2001, 2004, property of Dezhang Chu and Woods Hole Oceanographic
%%  Institution.  All Rights Reserved.

global para hdl data

HDIR=para.home_dir;

switch  window 
 case 1							% data preparation window
  if index == 1		% data input conversion filename
   eval(['cd ''' para.file_dir.data_conversion ''''])
   if para.platform == 1
     [filename, filepath]=uigetfile('*.m; *.dll','Select A Data-Conversion File');
   elseif para.platform == 2
     [filename, filepath]=uigetfile('*','Select A Data-Conversion File');
   elseif para.platform == 3
     [filename, filepath]=uigetfile('*.m','Select A Data-Conversion File');
   end
   eval(['cd ''' HDIR ''''])
   if isstr(filename)				% file exists
      [pathi truncated_filename ext ver]=fileparts(filename);
      para.dataprep.dat_conv_fname=truncated_filename;
      set(hdl.dataprep.dat_conv_fname,'string',filename);
      para.file_dir.data_conversion=filepath;
      cmd=['addpath ' filepath];
      eval(cmd);
   end   
  elseif index == 2  % input data filename
   eval(['cd ''' para.file_dir.datafile ''''])
   if para.platform == 1
     [filename, filepath]=uigetfile('*.dat; *.txt','Select an Input File');
   elseif para.platform == 2
     [filename, filepath]=uigetfile('*','Select an Input File');
   elseif para.platform == 3
     [filename, filepath]=uigetfile('*.dat','Select an Input File');
   end
   eval(['cd '''  HDIR ''''])
   if isstr(filename)				% file exists
      para.dataprep.filename=[filepath filename];
      set(hdl.dataprep.file,'string',para.dataprep.filename);
      [pathi truncated_filename ext ver]=fileparts(para.dataprep.filename);
	  para.dataprep.fileID=truncated_filename;
      set(hdl.dataprep.fileID,'string',para.dataprep.fileID);
 	  dataprep3d(1)
      para.file_dir.datafile=filepath;
   end
  elseif index == 3  % save data format filename
     if isfield(data,'in')
        save_data_format_info(1)
     else
        message(1,'Data have not been loaded yet !!');
     end
  end
 case 2									% fit variogram/correlogram window
   eval(['cd ''' para.file_dir.parafile ''''])
   switch index
     case 1                             % load a parameter file
         [filename, filepath]=uigetfile('*.mat','Select a Model Parameter File');
         if isstr(filename)
	        fname=[filepath filename];
	        para.vario.para_file=fname;
            load_para_file(fname,1);					% new variogram/correlogram window parameters
            set3dvariopara(2);							% set both edit field and slider positions
            para.file_dir.parafile=filepath;
        end
     case 2                                % save a parameter file
         [pathi truncated_filename ext ver]=fileparts(para.dataprep.filename);
         para.dataprep.para_file=[truncated_filename '_para'];
         [filename, filepath]=uiputfile('*.mat','Save the Model Parameter File as',para.dataprep.para_file);
         if isstr(filename)   
   	        fname=[filepath filename];
	        para.vario.para_file=fname;   
            save_para_file(fname,1);            % save parameters only
            para.file_dir.parafile=filepath;
        end
   end
   eval(['cd ''' HDIR ''''])
 case 3									% kriging window
   switch index 
    case 1			 % parameter file
	  if get(hdl.krig.vario_para,'value') == 1		% variogram parameter file
			para_type=1;
      elseif get(hdl.krig.krig_para,'value') == 1	% kriging parameter file
			para_type=2;
      elseif get(hdl.krig.both_para,'value') == 1	% both variogram and kriging parameter file
 			para_type=3;
      else
            para_type=3;
            message(1,'You need to select at least one option !!!');
            return
      end
        eval(['cd ''' para.file_dir.parafile ''''])
		if get(hdl.krig.load_para,'value') == 1				 % load parameter file
  			[filename, filepath]=uigetfile('*.mat','Select a Parameter File');
			if isstr(filename)
				para.krig.para_file_in=[filepath filename];
				load_para_file(para.krig.para_file_in,para_type);
                para.krig.save_para=0;
		   else
				set(hdl.krig.load_para,'value',0);
				set(hdl.krig.para_file_browser,'enable','off');
				set(hdl.krig.vario_para,'enable','off');
				set(hdl.krig.krig_para,'enable','off');
				set(hdl.krig.both_para,'enable','off');
		      return
			end
		   if para_type >= 2 
				set3dkrigpara(1);
			end			% set kriging parameter from variable struct
		elseif get(hdl.krig.save_para,'value')	== 1			 % save parameter file
            if isfield(para.krig,'batch_file_proc')
                para.krig.bat_proc_cnt=1;
            end
            if ~isfield(para.dataprep,'para_file')
                if isfield(para.dataprep,'fileID')
                   para.dataprep.para_file=[para.dataprep.fileID '_para'];
                else
                   para.dataprep.para_file=pwd;
                end
            end
  			[filename, filepath]=uiputfile('*.mat','Save to a Parameter File',para.dataprep.para_file);
			if isstr(filename)
				para.krig.para_file_out=[filepath filename];
				save_para_file(para.krig.para_file_out,1);		% save parameters only
		    else
				set(hdl.krig.para_file_browser,'enable','off');
				set(hdl.krig.save_para,'value',0);
		      return
			end
		end
        eval(['cd ''' HDIR ''''])
        para.file_dir.parafile=filepath;
	case 2										% load data file
      pp=get(hdl.krig.load_data_file,'value');
      eval(['cd ''' para.file_dir.datafile ''''])
      [filename, filepath]=uigetfile('*.dat','Select an Input Data File');
      eval(['cd ''' HDIR ''''])
      if ~isstr(filename) 
			set(hdl.krig.data_file_browser,'enable','off');
			set(hdl.krig.load_data_file,'value',0);
			set(hdl.krig.data_file,'visible','off');
			return;
	  end
  	  para.krig.load_data_file=1;
      para.file_dir.datafile=filepath;
      para.krig.data_file=[filepath filename];
      set(hdl.krig.data_file,'string',para.krig.data_file);
      [pathi truncated_filename ext ver]=fileparts(para.krig.data_file);
	  set(hdl.krig.fileID,'string',truncated_filename);
	  para.dataprep.fileID=truncated_filename;
      if para.krig.load_data_format_file == 0
		   loaddatfile(2);			% load data file from kriging window
		   datachk(2);					% calling datachk.m from kriging window using the existing data format
      else
           load_data_format_info
		   loaddatfile(2);			% load data file from kriging window
		   datachk(3);					% calling datachk.m from kriging window using a specified data format
      end
      if ~isfield(para.dataprep,'transform_index') para.dataprep.transform_index=1;end
  	  data.in.tv=datatransform(1,data.in.v,para.dataprep.transform_index);	% Forward Data Transformation
      para.krig.load_data_file=1;
      para.dispkrig.Qcheck=0;  % initilize cross validation status
	case 3						% load parameter file from menu bar
	  set(hdl.krig.load_para,'value',1);
      radio_action(3,1);
	  switch type
			case 1		% load variogram parameters only
				set(hdl.krig.vario_para,'value',1);
				radio_action(3,3);
			case 2		% load kriging parameters only
				set(hdl.krig.krig_para,'value',1);
				radio_action(3,4);
			case 3		% load both variogram and kriging parameters
				set(hdl.krig.both_para,'value',1);
				radio_action(3,5);
	  end
	  file_browser3d(3,1,1);
	case 4						% save parameter file from menu bar
	  set(hdl.krig.save_para,'value',1);
	  radio_action(3,2);
	  file_browser3d(3,1,2);
	case 5						% load data file from menu bar								
	  set(hdl.krig.load_data_file,'value',1);
	  radio_action(3,6);
	  file_browser3d(3,2);
    case 6                      % batch process filename-list file
      eval(['cd ''' para.file_dir.batch_filename '''']);
      [filename, filepath]=uigetfile('*.dat','Select a File');
      eval(['cd ''' HDIR ''''])
      para.file_dir.batch_filename=filepath;
      if ~isstr(filename) 
			return;
	  end
      para.krig.batch_data_file=[filepath filename];
    case 7                                     % batch process log file
      eval(['cd ''' para.file_dir.batch_log ''''])
      if isfield(para,'dataprep') & isfield(para.dataprep,'fileID')
          batch_log_file_path=para.dataprep.fileID;
      else
          batch_log_file_path='';
      end
      [filename, filepath]=uiputfile('*.log','Define a Log Filename',batch_log_file_path);
      eval(['cd ''' HDIR ''''])
      if ~isstr(filename) 
			return;
	  end
      if length(filename) > 4 & strcmp(filename(end-3:end),'.log')
         para.krig.batch_log_file=[filepath filename];
      elseif isempty(find(filename == '.'))
         para.krig.batch_log_file=[filepath filename '.log'];
      end
      para.file_dir.batch_log=filepath;
    case 8                                      % load customized grid file
     eval(['cd ''' para.file_dir.gridfile ''''])
     [filename, filepath]=uigetfile('*.dat','Define a Customized Grid Filename');
      eval(['cd ''' HDIR ''''])
      if ~isstr(filename) 
			return;
	  end
      para.krig.load_griddata_file=1;
      para.file_dir.gridfile=filepath;
      para.krig.grid_file=[filepath filename];
      get_set_gridfile_para
      set3dkrigpara(2)
     case 9                                     % load data format file
      eval(['cd ''' para.file_dir.datafile ''''])
      [filename, filepath]=uigetfile('*.mat','Select an Input Data Format File');
      eval(['cd ''' HDIR ''''])
      para.krig.load_data_format_file=1;
      if ~isstr(filename) 
			set(hdl.krig.data_format_file_browser,'enable','off');
			set(hdl.krig.load_data_format_file,'value',0);
			set(hdl.krig.data_file,'visible','off');
			return;
	   end
       para.file_dir.data_format_file=filepath;
       para.krig.data_format_file=[filepath filename];
       set(hdl.krig.data_file,'string',para.krig.data_format_file);
       load_data_format_info
	 end
 case 4									% visualization window
    switch index 						
       case 1% parameter file
            eval(['cd ''' para.file_dir.mat_file_in ''''])
	 		[filename, filepath]=uigetfile( '*.mat','Load a .mat File');
            eval(['cd ''' HDIR ''''])
	 		fname=[filepath filename];
	 		if isstr(filename)
				loaddatfile(3,fname);			% load data file from visualization window		 
                para.file_dir.mat_file_in=filepath;
	 		end
 		 case 2								% save krig output to a file 
	 		default_fname=get(hdl.dispkrig3d.fileID,'string');
	 		indx=find(default_fname == '.')-1;
	 		if isempty(indx)
				indx=length(default_fname);
	 		end
            eval(['cd ''' para.file_dir.mat_file_out ''''])
  	 		[filename, filepath]=uiputfile([default_fname(1:indx) '.mat'],'Save output to a File',para.dataprep.fileID);
            eval(['cd ''' HDIR ''''])
	 		if isstr(filename)
		 		para.save_output.filename=[filepath filename];
	    		save_para_file(para.save_output.filename,2);		% save everything
                para.file_dir.mat_file_out=filepath;
          end
       case 3								% save krig figure to a file 
          filemenufcn(gcbf,'FileSaveAs')
end  
       
end										% end window switch
eval(['chdir ' '''' HDIR '''']);