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

📄 erp_plot_ui.m

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

   return;					% toggle_chan_name


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

function toggle_chan_axes

   hm_chan_axes = getappdata(gcf,'hm_chan_axes');
   hm_chan_tick = getappdata(gcf,'hm_chan_tick');
   view_option = getappdata(gcf,'view_option');
   datamat_file = getappdata(gcf,'datamat_file');
   setting = getappdata(gcf,'setting');
   chan_axes_status = get(hm_chan_axes,'userdata');

   if ~chan_axes_status                         % was not checked
      set(hm_chan_axes, 'userdata',1, 'check','on');
      erp_plot_ui('display_chan_axes','on');
   else
      set(hm_chan_axes, 'userdata',0, 'check','off');
      erp_plot_ui('display_chan_axes','off');

      set(hm_chan_tick, 'userdata',0, 'check','off');
      erp_plot_ui('display_chan_tick','off');
   end

   chan_axes_status = get(hm_chan_axes,'userdata');
   chan_tick_status = get(hm_chan_tick,'userdata');
   setting.chan_axes_status = chan_axes_status;
   setting.chan_tick_status = chan_tick_status;

   setappdata(gcf,'setting',setting);
   try
      switch view_option
         case {1}                               %  subj
            setting1 = setting;
            save(datamat_file, '-append', 'setting1');
         case {2}                               %  avg
            setting2 = setting;
            save(datamat_file, '-append', 'setting2');
         case {3}                               %  salience
            setting3 = setting;
            save(datamat_file, '-append', 'setting3');
         case {4}                               %  grp
            setting4 = setting;
            save(datamat_file, '-append', 'setting4');
         case {5}                               %  corr
            setting5 = setting;
            save(datamat_file, '-append', 'setting5');
      end
   catch
      msg = 'Cannot save setting information';
      msgbox(msg,'ERROR','modal');
      return;
   end;

   return;                                      % toggle_chan_axes


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

function toggle_chan_tick

   hm_chan_tick = getappdata(gcf,'hm_chan_tick');
   hm_chan_axes = getappdata(gcf,'hm_chan_axes');
   view_option = getappdata(gcf,'view_option');
   datamat_file = getappdata(gcf,'datamat_file');
   setting = getappdata(gcf,'setting');
   chan_tick_status = get(hm_chan_tick,'userdata');
   chan_axes_status = get(hm_chan_axes,'userdata');

   %  if tick was not checked and axes was checked
   %  put check on tick menu
   if ~chan_tick_status & chan_axes_status
      set(hm_chan_tick, 'userdata',1, 'check','on');
      erp_plot_ui('display_chan_tick','on');
   else						% take check out
      set(hm_chan_tick, 'userdata',0, 'check','off');
      erp_plot_ui('display_chan_tick','off');
   end

   chan_tick_status = get(hm_chan_tick,'userdata');
   chan_axes_status = get(hm_chan_axes,'userdata');
   setting.chan_axes_status = chan_axes_status;
   setting.chan_tick_status = chan_tick_status;

   setappdata(gcf,'setting',setting);
   try
      switch view_option
         case {1}                               %  subj
            setting1 = setting;
            save(datamat_file, '-append', 'setting1');
         case {2}                               %  avg
            setting2 = setting;
            save(datamat_file, '-append', 'setting2');
         case {3}                               %  salience
            setting3 = setting;
            save(datamat_file, '-append', 'setting3');
         case {4}                               %  grp
            setting4 = setting;
            save(datamat_file, '-append', 'setting4');
         case {5}                               %  corr
            setting5 = setting;
            save(datamat_file, '-append', 'setting5');
      end
   catch
      msg = 'Cannot save setting information';
      msgbox(msg,'ERROR','modal');
      return;
   end;

   return;                                      % toggle_chan_tick


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

function select_wave()

   % don't do anything if we're supposed to be zooming
   tmp = zoom(gcf,'getmode');
   if (isequal(tmp,'in') | isequal(tmp,'on')), return; end

   view_option = getappdata(gcf,'view_option');
   wave_hdl = getappdata(gcf,'wave_hdl');
   selected_wave_idx = getappdata(gcf,'selected_wave_idx');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   for i=selected_chan_idx			% deselect other wave
      for j=selected_wave_idx
         set(wave_hdl(i,j),'selected','off');
      end
   end

   set(gco,'selected','on');			% select only this wave

   wave_info = get(gcbo,'user');		% [wave#, channel#]
   j = wave_info(1);
   i = wave_info(2);

   chan_name_hdl = getappdata(gcf,'chan_name_hdl');
   chan_name = get(chan_name_hdl(i), 'string');
   selected_wave_name = getappdata(gcf,'selected_wave_name');
   init_option = getappdata(gcf,'init_option');
   wave_name = selected_wave_name(j,:);

   txtbox_hdl = rri_txtbox(gca, 'Channel Name', chan_name, ...
				'Wave Name', wave_name);
   setappdata(gcf, 'txtbox_hdl', txtbox_hdl);

   return;					% select_wave


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

function fig_bt_dn()

   wave_hdl = getappdata(gcf,'wave_hdl');
   selected_wave_idx = getappdata(gcf,'selected_wave_idx');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   for i=selected_chan_idx
      for j=selected_wave_idx
         set(wave_hdl(i,j),'selected','off');		% remove selection
      end
   end

   try
      txtbox_hdl = getappdata(gcf,'txtbox_hdl');
      delete(txtbox_hdl);				% clear rri_txtbox
   catch
   end

   return;						% fig_bt_dn


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

function select_chan_name()

   % don't do anything during zooming
   %
   tmp = zoom(gcf,'getmode');
   if (isequal(tmp,'in') | isequal(tmp,'on')), return; end

   current_weight = get(gco,'fontweight');

   if strcmp(current_weight, 'normal')
      set(gco,'fontweight','bold');
   else
      set(gco,'fontweight','normal');
   end

   return;					% select_chan_name


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

function select_rubber_chan()

   set(gcf,'pointer','crosshair');
   [ll ur] = rri_rubberband;

   chan_name_hdl = getappdata(gcf,'chan_name_hdl');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   for i=selected_chan_idx

      extent = get(chan_name_hdl(i),'extent');
      x=extent(1); y=extent(2); w=extent(3); h=extent(4);

      if x>=ll(1) & y>=ll(2) & x+w<=ur(1) & y+h<=ur(2)
         set(chan_name_hdl(i),'fontweight','bold');
      end

   end

   set(gcf,'pointer','arrow');

   return;


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

function select_all_chan()

   chan_name_hdl = getappdata(gcf,'chan_name_hdl');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   for i=selected_chan_idx
      set(chan_name_hdl(i),'fontweight','bold');  % select all chan_name
   end

   return;					% select_all_chan


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

function reset_all_chan()

   chan_name_hdl = getappdata(gcf,'chan_name_hdl');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   for i=selected_chan_idx
      set(chan_name_hdl(i),'fontweight','normal');  % clear all chan_name
   end

   return;					% reset_all_chan


%  Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------

function display_chan_name(state)

   chan_name_hdl = getappdata(gcf,'chan_name_hdl');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   if isempty(chan_name_hdl)
     return;
   end

   for i=selected_chan_idx
      set(chan_name_hdl(i), 'visible', state);
   end

   return;                                      % display_chan_name


%  Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------

function display_chan_axes(state)

   axis_hdl = getappdata(gcf,'axis_hdl');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   if isempty(axis_hdl)
     return;
   end

   for i=selected_chan_idx
      set(axis_hdl(:,i), 'visible', state);
   end

   return;                                      % display_chan_axes


%  Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------

function display_chan_tick(state)

   xtick_hdl = getappdata(gcf,'xtick_hdl');
   ytick_hdl = getappdata(gcf,'ytick_hdl');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

   if isempty(xtick_hdl) | isempty(ytick_hdl)
     return;
   end

   for i=selected_chan_idx
      set(xtick_hdl(:,i), 'visible', state);
   end

   for i=selected_chan_idx
      set(ytick_hdl(:,i), 'visible', state);
   end

   return;                                      % display_chan_tick


%  Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------

function display_legend(state)

   legend_hdl = getappdata(gcf,'legend_hdl');

   if ~isempty(legend_hdl)		% legend was already created

      set(legend_hdl{1}, 'visible', state);
      num_obj = length(legend_hdl{2});

      for i=1:num_obj
         set(legend_hdl{2}(i),'visible',state);
      end

      return;

   end

   avg_wave_hdl = getappdata(gcf,'avg_wave_hdl');
   wave_hdl = getappdata(gcf,'wave_hdl');
   bs_wave_hdl = getappdata(gcf,'bs_wave_hdl');
   selected_avg_idx = getappdata(gcf,'selected_avg_idx');
   selected_wave_idx = getappdata(gcf,'selected_wave_idx');
   selected_bs_idx = getappdata(gcf,'selected_bs_idx');
   selected_avg_name = getappdata(gcf,'selected_avg_name');
   selected_wave_name = getappdata(gcf,'selected_wave_name');
   selected_bs_name = getappdata(gcf,'selected_bs_name');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');
   first_chan = selected_chan_idx(1);		% first selected channel

   %  create a new legend, and save the handles
   %
   if ~isempty(avg_wave_hdl) & ~isempty(wave_hdl) % display both
      [l_hdl, o_hdl] = legend([avg_wave_hdl(first_chan,selected_avg_idx), ...
         wave_hdl(first_chan,selected_wave_idx)], ...
         char([{selected_avg_name}; {selected_wave_name}]), 0);
      legend_txt(o_hdl);
   elseif isempty(avg_wave_hdl) & ~isempty(wave_hdl) % display subj
      if ~isempty(bs_wave_hdl)			% also display bootstrap

         %  first check is bs_wave_hdl a handle
         %
         for i = 1:size(bs_wave_hdl,1)
            if ishandle(bs_wave_hdl(i,selected_bs_idx))
               first_chan = i;
               i = size(bs_wave_hdl,1);
            end
         end

         [l_hdl, o_hdl] = legend([wave_hdl(first_chan,selected_wave_idx), ...
            bs_wave_hdl(first_chan,selected_bs_idx)], ...
            char([{selected_wave_name}; {selected_bs_name}]), 0);
         legend_txt(o_hdl);
      else
         [l_hdl, o_hdl] = legend(wave_hdl(first_chan,selected_wave_idx), ...
            selected_wave_name, 0);
         legend_txt(o_hdl);
      end
   elseif ~isempty(avg_wave_hdl) & isempty(wave_hdl) % display avg
      [l_hdl, o_hdl] = legend(avg_wave_hdl(first_chan,selected_avg_idx), ...
         selected_avg_name, 0);
      legend_txt(o_hdl);
   end

   set(l_hdl,'color',[0.9 1 0.9]);
   setappdata(gcf,'legend_hdl',[{l_hdl} {o_hdl}]);

   return;                                      % display_legend


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

function modify_datamat

   h0 = gcf;
   modify_fig_name = [];

   try
      modify_fig_name = get(getappdata(h0,'modify_fig'),'name');
   catch
   end

   if ~isempty(modify_fig_name) & strcmp(modify_fig_name,'Modify Datamat')
      msg = 'ERROR: Modify Datamat window has already been opened.';
      msgbox(msg,'ERROR','modal');
      return;
   end

   % Remove chosen channels from selected_channels list
   %
   chan_name_hdl = getappdata(gcf,'chan_name_hdl');
   selected_channels = getappdata(gcf,'selected_channels');
   selected_chan_idx = getappdata(gcf,'selected_chan_idx');

⌨️ 快捷键说明

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