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

📄 erp_single_folder.m

📁 绝对经典,老外制作的功能强大的matlab实现PLS_TOOBOX
💻 M
📖 第 1 页 / 共 4 页
字号:
      emptydir = 1;
   end;

   set(gcbo,'String',pls_dir);
   
   %  
   if (~emptydir)
      if ( exist(pls_dir,'dir') == 7 ) 	   % specified directory exists
         setappdata(gcf,'SessionPLSDir',pls_dir);
         cd(pls_dir)
         return;
      end;

      if ( exist(pls_dir,'file') == 2 )	   % it is a file!
         msg = 'ERROR: The specified direcotry is a file!';
         set(findobj(gcf,'Tag','MessageLine'),'String',msg);
         setappdata(gcf,'SessionPLSDir','');
         return;
      end;
   end;

   %   the directory does not exist, how about the parent directory ?
   %
   [fpath,fname,fext] = fileparts(pls_dir);

   if isempty(fpath)
      emptypath = 1;
   end;

   if (~emptydir & ~emptypath & exist(fpath,'dir') == 7 ) % parent directory exists
      dlg_title = 'PLS Directory';
      msg = 'The directory does not exist.  Do you want to create it?';
      response = questdlg(msg,dlg_title,'Yes','No','Yes');

      switch response,
         case 'Yes',
            status = mkdir(fpath,[fname fext]);
            if (status ~= 1)
               msg = sprintf('ERROR: Directory cannot be created');
               set(findobj(gcf,'Tag','MessageLine'),'String',msg);
               setappdata(gcf,'SessionPLSDir','');
            else
               setappdata(gcf,'SessionPLSDir',pls_dir);
               cd(pls_dir);
            end
               return;
         case 'No',
            set(gcbo,'String','');
            setappdata(gcf,'SessionPLSDir','');
      end; 
   else   
      msg = 'ERROR: Invalid input direcotry!'; 
      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
   end;

   return;						% EditPLSDataDir


%----------------------------------------------------------------------------

function SelectPLSDataDir

   h = findobj(gcf,'Tag','PLSDataDirectoryEdit');
   pls_data_dir = rri_getdirectory({get(h,'String')});

   if ~isempty(pls_data_dir),
       set(h,'String',pls_data_dir); 
       set(h,'TooltipString',pls_data_dir); 
       setappdata(gcf,'SessionPLSDir',pls_data_dir);
       cd(pls_data_dir);
   end;

   return;						% SelectPLSDataDir


%----------------------------------------------------------------------------

function SelectContrastData

   [filename,pathname]=uigetfile('*.*','Select Contrast Data File');
        
   if isequal(filename,0) | isequal(pathname,0)		% Cancel was clicked
      return;
   end;
   
   contrastdata_file = [pathname, filename];

   try
      contrastdata = load(contrastdata_file);
   catch						% cannot open file
      msg = ['ERROR: Could not open file'];
      msgbox(msg,'ERROR','modal');
      return;
   end

   setappdata(gcf,'SessionContrastData',contrastdata);
   setappdata(gcf,'SessionNumContrast',size(contrastdata, 1));
   set(findobj(gcf,'Tag','NumberContrastEdit'),'String',size(contrastdata,1));

   return;						% SelectContrastData


%----------------------------------------------------------------------------

function SelectBehavData

   [filename,pathname]=uigetfile('*.*','Select Behavior Data File');
        
   if isequal(filename,0) | isequal(pathname,0)		% Cancel was clicked
      return;
   end;
   
   behavdata_file = [pathname, filename];

   try
      behavdata = load(behavdata_file);
   catch						% cannot open file
      msg = ['ERROR: Could not open file'];
      msgbox(msg,'ERROR','modal');
      return;
   end

   setappdata(gcf,'SessionBehavData',behavdata);
   setappdata(gcf,'SessionNumBehavior',size(behavdata, 1));
   set(findobj(gcf,'Tag','NumberBehaviorEdit'),'String',size(behavdata,1));

   return;						% SelectBehavData


%----------------------------------------------------------------------------

function EditConditions()

   condition = getappdata(gcf,'SessionConditions');
   old_subj_files = getappdata(gcf,'subj_files');

   % Input conditions
   %
   [new_condition, subj_files, reselect_subj] = ...
		rri_input_condition_ui(condition, old_subj_files);

   num_conds = num2str(length(new_condition));
   set(findobj(gcf,'Tag','NumberConditionsEdit'),'String',num_conds);

   setappdata(gcf,'SessionNumConditions',length(new_condition));
   setappdata(gcf,'SessionConditions',new_condition);
   setappdata(gcf,'subj_files', subj_files);
   setappdata(gcf,'reselect_subj', reselect_subj);

   return;						% EditConditions


%----------------------------------------------------------------------------

function EditSubjects()

   num_subj_init = getappdata(gcf,'num_subj_init');
   num_subjects = getappdata(gcf,'SessionNumSubjects');
   old_subjects = getappdata(gcf,'SessionSubject');
   old_subj_files = getappdata(gcf,'subj_files');
   condition = getappdata(gcf,'SessionConditions');
   selected_conditions = ones(1,length(condition));

   % edit the names of subjects
   %
   [subjects, subj_files, num_subj_init] = ...
	rri_input_subject_ui(old_subjects, old_subj_files, ...
	condition, selected_conditions, num_subj_init);

   num_subjs = num2str(length(subjects));
   set(findobj(gcf,'Tag','NumberSubjectsEdit'),'String',num_subjs);

   % use subject file name as subject name
   %
   subj_name = [];
   for i=1:length(subjects)
      [fpath fname] = fileparts(subjects{i});
      subj_name{i} = fname;
   end

   setappdata(gcf,'num_subj_init',num_subj_init);
   setappdata(gcf,'SessionNumSubjects',length(subjects));
   setappdata(gcf,'SessionSubject',subjects);
   setappdata(gcf,'subj_name', subj_name);
   setappdata(gcf,'subj_files', subj_files);
   setappdata(gcf,'reselect_subj', 0);

   return;						% EditSubjects


%----------------------------------------------------------------------------

function status = ChkModified()
% Output:
%          status = 0, error
% 	   status = 1, ok

   status = 1;

   [session_info,session_file,old_session_info] = GetSessionInfo;

   if (isequal(session_info,old_session_info) == 0),
      dlg_title = 'Session Information has been changed';
      msg = 'WARNING: The session information has been changed.  Do you want to save it?';
      response = questdlg(msg,dlg_title,'Yes','No','Cancel','Yes');

      switch response,
         case 'Yes'
 	      status = SaveSessionInfo;
         case 'Cancel'
 	      status = 0;
         case 'No'
 	      status = 2;
      end;
   end;

   return;						% ChkModified


%----------------------------------------------------------------------------

function CreateDatamat()

   %  make sure the session information has been saved
   %
   [session_info,session_file,old_session_info] = GetSessionInfo;

   if isempty(session_file) | isequal(session_info,old_session_info) == 0

       status = ChkModified;

       session_file = getappdata(gcf,'SessionFile');

       if isempty(session_file)
          % status = 2;
          return;
       end

       if (status == 0)
          return;
       elseif (status == 2)
          msg =  'ERROR: Save the session information before creating datamat.';
          set(findobj(gcf,'Tag','MessageLine'),'String',msg);
          return;
       end
   end;

   calling_fig = getappdata(gcf,'CallingFigure');
   close(calling_fig);

   h_session = gcf;

   erp_create_datamat({session_file});

   close(h_session);

   return;						% CreateDatamat


%----------------------------------------------------------------------------

function ModifyDatamat()

   [datamat_file, datamat_path] =  ...
	uigetfile('*_ERPdatamat.mat', 'Open ERP Datamat');

   if (datamat_path == 0), return; end;
   datamat_file = fullfile(datamat_path, datamat_file);

   calling_fig = getappdata(gcf,'CallingFigure');
   this_fig = gcf;

   load(datamat_file, 'selected_channels', 'selected_subjects');
   modifier.selected_channels = selected_channels;
   modifier.selected_subjects = selected_subjects;

   erp_plot_ui({datamat_file, 1});
   h0 = gcf;
   h01 = erp_modify_datamat(modifier, datamat_file, h0);

   if ~isempty(h01)
      setappdata(h0,'modify_fig',h01);
   end

   close(calling_fig);
   close(this_fig);

   return;						% ModifyDatamat


%----------------------------------------------------------------------------

function EditContrastData

   contrastdata = getappdata(gcf,'SessionContrastData');
   contrastdata = rri_edit_string(num2str(contrastdata));
   setappdata(gcf,'SessionContrastData',str2num(contrastdata));
   setappdata(gcf,'SessionNumContrast',size(contrastdata, 1));
   set(findobj(gcf,'Tag','NumberContrastEdit'), ...
	'String',size(contrastdata,1));

   return;						% EditContrastData


%----------------------------------------------------------------------------

function EditBehavData

   behavdata = getappdata(gcf,'SessionBehavData');
   behavname = getappdata(gcf,'SessionBehavName');
   [behavdata, behavname] = rri_edit_behav(num2str(behavdata), behavname, 'Edit Behavior Data');
   setappdata(gcf,'SessionBehavData',str2num(behavdata));
   setappdata(gcf,'SessionBehavName',behavname);
   setappdata(gcf,'SessionNumBehavior',size(str2num(behavdata), 1));
   set(findobj(gcf,'Tag','NumberBehaviorEdit'),'String',size(str2num(behavdata),1));

   return;						% EditBehavData


%----------------------------------------------------------------------------

function EditChanOrder

   subject = getappdata(gcf,'SessionSubject');
   subj_files = getappdata(gcf,'subj_files');
   eeg_format = getappdata(gcf,'eeg_format');

   prescan_fn = [subject{1}, filesep, subj_files{1,1}];
%   prescan = load(prescan_fn);				% prescan 1 wave
   [prescan, eeg_format] = read_eeg(prescan_fn, eeg_format);
   setappdata(gcf,'eeg_format',eeg_format);

   h = findobj(gcf,'Tag','chan_in_col');
   chan_in_col = get(h,'value');

   if chan_in_col
      prescan = prescan';
   end

   prescan_chan = size(prescan, 1);
   chan_order = getappdata(gcf,'SessionChanOrder');
   system = getappdata(gcf,'system');

   if isempty(system)
      system.class = 1;
      system.type = 1;
   end

   [new_chan_order, new_system] = ...
      erp_select_chan(num2str(chan_order), system, 'Edit Channel Order');
   new_chan_order = str2num(new_chan_order);

   if prescan_chan == size(new_chan_order,1)
      setappdata(gcf,'SessionChanOrder',new_chan_order);
      setappdata(gcf,'SessionNumChannels',prescan_chan);
      setappdata(gcf,'system',new_system);
      set(findobj(gcf,'Tag','NumberChannelsEdit'),'String',num2str(prescan_chan));
   else
      setappdata(gcf,'SessionChanOrder',chan_order);
      setappdata(gcf,'SessionNumChannels',size(chan_order,1));
      setappdata(gcf,'system',system);
      set(findobj(gcf,'Tag','NumberChannelsEdit'),'String',num2str(size(chan_order,1)));

      msg = 'Number of channels does not match the subject data';
      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
   end

   return;						% EditChanOrder


%----------------------------------------------------------------------------
function PathSessionInfo(init_flag)
%  init_flag = 0  for clear operation
%  init_flag = 1  for initialization
%

   if (init_flag == 0 & ChkModified == 0)
      return;			% error
   end;

   old_session_info = getappdata(gcf,'OldSessionInfo');
   session_info = old_session_info;
   session_info = rri_changepath_se(session_info);

   if isempty(session_info)
      session_info = old_session_info;
   end

   setappdata(gcf,'SessionPLSDir',session_info.pls_data_path);
   setappdata(gcf,'SessionSubject',session_info.subject);

   return;						% PathSessionInfo


%----------------------------------------------------------------------------
function click_chan_in_col

   setappdata(gcf,'SessionChanOrder','');
   setappdata(gcf,'SessionNumChannels',0);
   setappdata(gcf,'system','');
   set(findobj(gcf,'Tag','NumberChannelsEdit'),'String','0');

   msg = 'Number of channels field has been reset to 0';
   set(findobj(gcf,'Tag','MessageLine'),'String',msg);

   return;						% click_chan_in_col


%----------------------------------------------------------------------------
function edit_single_folder

   h = findobj(gcf,'Tag','NumberSubjectsEdit');
   setappdata(gcf,'SessionNumSubjects',str2num(get(h,'String')));

   return;


%----------------------------------------------------------------------------
function EditSubject2

   h = findobj(gcf,'Tag','NumberSubjectsEdit');

   if ~getappdata(gcf,'SessionNumSubjects')
         msg = 'Please input Number of Subjects first.';
         set(findobj(gcf,'Tag','MessageLine'),'String',msg);
         return;
   end

   num_cond = getappdata(gcf,'SessionNumConditions');
   subj_files = {};

   curr_dir = pwd;
   p = pwd;

   for i = 1:getappdata(gcf,'SessionNumSubjects')

      subj_name{i} = ['Subject' num2str(i)];

      tit = ['Select files for ', subj_name{i}];
      pf = erp_getsubject_ui(tit);

      if isempty(pf)
	return;
      end

      ff = cell(size(pf));

      for j = 1:size(ff,1)
         [p f] = rri_fileparts(pf{j});
         ff{j} = f;
      end

      cd(p);
      subjects{i} = p;
      subj_files = [subj_files ff];

   end

   setappdata(gcf,'num_subj_init',-1);
   setappdata(gcf,'SessionSubject',subjects);
   setappdata(gcf,'subj_name', subj_name);
   setappdata(gcf,'subj_files', subj_files);
   setappdata(gcf,'reselect_subj', 0);

   cd(curr_dir);

   return;

⌨️ 快捷键说明

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