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

📄 erp_plot_ui.m

📁 绝对经典,老外制作的功能强大的matlab实现PLS_TOOBOX
💻 M
📖 第 1 页 / 共 5 页
字号:
         for i = 1:lv
            bs_name = [bs_name, {['LV',num2str(i)]}];
         end

         rescale = 0;
         setting.rescale = rescale;

      case {3}				% salience

         rri_changepath('erpresult');

%         load(datamat_file, 'isbehav');

         if isbehav == 2
            set(hm_score,'visible','on');
            set(hm_brain,'visible','on');
            set(hm_corr, 'visible', 'on');
            set(hm_canonical, 'visible', 'on');
            set(hm_canonicalcorr, 'visible', 'on');
         elseif isbehav
            set(hm_score,'visible','off');
            set(hm_brain,'visible','on');
            set(hm_corr, 'visible', 'on');
            set(hm_canonical, 'visible', 'off');
            set(hm_canonicalcorr, 'visible', 'on');
         else
            set(hm_score,'visible','on');
            set(hm_brain,'visible','off');
            set(hm_corr, 'visible', 'off');
            set(hm_canonical, 'visible', 'on');
            set(hm_canonicalcorr, 'visible', 'off');
         end

         if ~exist('design','var')
            set(hm_contrast,'visible','off');
         else
            set(hm_contrast,'visible','on');
         end

         chan_mask = chan_order(find(common_channels));

         time_info = common_time_info;

         ti = round(time_info.timepoint);
         ch = sum(common_channels);
         lv = size(salience,2);

         wave_amplitude = reshape(salience, [ti, ch, lv]);
         selected_channels = ones(1,ch);
         selected_wave = 1:lv;
         selected_bs = 1:lv;

         %  display bootstrap result if there is one
         %
         if exist('boot_result','var') & ~isempty(boot_result)

            %  get bootstrap ratio from boot_result
            %
            bs_ratio = boot_result.compare;
            bsr = bs_ratio;

            %  initialize bootstrap field
            %
            if isempty(bs_field)
               bs_field = erp_bs_option_ui('set_bs_fields',bsr);
               setting.bs_field = bs_field;
            end

            %  set amplitude to 1 if above threshold, 0 otherwise
            %
            for i = 1:lv
               too_large = find(bsr > (bs_field{i}.max_ratio));
               bsr(too_large) = bs_field{i}.max_ratio;

               too_small = find(bsr < (bs_field{i}.min_ratio));
               bsr(too_small) = bs_field{i}.min_ratio;

               bs_amplitude(:,i) = (abs(bsr(:,i)) >= (bs_field{i}.thresh));
            end

            %  selected_channels & selected_wave will be the same
            %
            bs_amplitude = reshape(bs_amplitude, [ti, ch, lv]);

            %  enable bootstrap option menu
            %
            set(hm_bs_option, 'visible', 'on');

         end	% exist('boot_result')

         %  create latent variable name
         %
         wave_name = [];
         bs_name = [];
         for i = 1:lv
            wave_name = [wave_name, {['LV',num2str(i)]}];
            bs_name = [bs_name, {['LV',num2str(i)]}];
         end

      case {4}				% grp

         rri_changepath('erpresult');

         chan_mask = chan_order(find(common_channels));

         time_info = common_time_info;

         ti = round(time_info.timepoint);
         ch = sum(common_channels);
         lv = size(salience,2);

         newdata_lst = erp_get_common(datamat_files, 1, 1, cond_selection);
         num_group = length(newdata_lst);
         num_cond = sum(common_conditions);

         org_wave_name = cond_name(find(common_conditions));
         org_wave_name = repmat(org_wave_name, [1, num_group]);

         grp_id = [];
         g = 1;
         for i = 1:length(org_wave_name)
            org_wave_name{i} = [org_wave_name{i}, ' in group ', num2str(g)];
            grp_id(i) = g;
            if mod(i, num_cond) == 0
               g = g + 1;
            end
         end

         a = 2;				% total increase in order (exclude 'none')
         p = 1;				% selected cond increase in order
         tmp_subj_tot = 0;
         for i = 1:length(org_wave_name)
            q = 1;			% selected subj increase in order
            for j = 1:num_subj_lst(grp_id(i))
               idx = tmp_subj_tot + j;
               selected_wave = [selected_wave idx];
               selected_wave_info(idx, 1) = i;
               selected_wave_info(idx, 2) = j;
               name_str = [subj_name_lst{grp_id(i)}{j},' in "',org_wave_name{i}, '"'];
               wave_name{idx} = name_str;
               wave_order(a-1,:) = [a, q, p, grp_id(i)];
               q = q + 1;
               a = a + 1;
            end
            p = p + 1;
            tmp_subj_tot = tmp_subj_tot + num_subj_lst(grp_id(i));
         end

         [avg_amplitude, wave_amplitude] = ...
		erp_datamat2datacub(newdata_lst, ...
		common_channels, common_conditions, {});
         avg_amplitude = [];

         [dim1 dim2 dim3] = size(wave_amplitude);

         selected_channels = ones(1,sum(common_channels));
         % selected_wave = 1:dim3;

         rescale = 0;
         setting.rescale = rescale;

      case {5}

         rri_changepath('erpresult');

         chan_mask = chan_order(find(common_channels));

         time_info = common_time_info;

         ti = round(time_info.timepoint);
         ch = sum(common_channels);
         lv = size(salience,2);

%         newdata_lst = erp_get_common(datamat_files, 1, 1);	% datamatcorrs_lst
         num_group = length(datamatcorrs_lst);		% length(newdata_lst);
         num_cond = length(bscan);	% sum(common_conditions);
         num_behav = length(behavname);	%sum(common_behav);
         behavname_lst = behavname;	%(find(common_behav));

         selected_common = find(common_conditions);
         selected_common = selected_common(bscan);
         conditions_common = zeros(1,length(common_conditions));
         conditions_common(selected_common) = 1;

         org_wave_name = cond_name(find(conditions_common));
         org_wave_name = repmat(org_wave_name, [1, num_group]);

         grp_id = [];
         g = 1;
         for i = 1:length(org_wave_name)
            org_wave_name{i} = [org_wave_name{i}, ' in group ', num2str(g)];
            grp_id(i) = g;
            if mod(i, num_cond) == 0
               g = g + 1;
            end
         end

         a = 2;				% total increase in order (exclude 'none')
         p = 1;				% selected cond increase in order
         tmp_subj_tot = 0;
         for i = 1:length(org_wave_name)
            q = 1;			% selected subj increase in order
            for j = 1:num_behav    % num_subj_lst(grp_id(i))
               idx = tmp_subj_tot + j;
               selected_wave = [selected_wave idx];
               selected_wave_info(idx, 1) = i;
               selected_wave_info(idx, 2) = j;
%               name_str = [subj_name_lst{grp_id(i)}{j},' in "',org_wave_name{i}, '"'];
               name_str = [behavname_lst{j},' in "',org_wave_name{i}, '"'];
               wave_name{idx} = name_str;
               wave_order(a-1,:) = [a, q, p, grp_id(i)];
               q = q + 1;
               a = a + 1;
            end
            p = p + 1;
            tmp_subj_tot = tmp_subj_tot + num_behav;	% num_subj_lst(grp_id(i));
         end

%         [avg_amplitude, wave_amplitude] = ...
%		erp_datamat2datacub(newdata_lst, ...
%		common_channels, common_conditions, {});
         avg_amplitude = [];
         wave_amplitude = [];

         for i = 1:num_group
            wave_amplitude = [wave_amplitude; datamatcorrs_lst{i}];
         end

         wave_amplitude = reshape(wave_amplitude', [ti ch size(wave_amplitude,1)]);

         [dim1 dim2 dim3] = size(wave_amplitude);

         selected_channels = ones(1,sum(common_channels));
         % selected_wave = 1:dim3;

         selected_bs = 1:lv;

         %  display bootstrap result if there is one
         %
         if exist('boot_result','var') & ~isempty(boot_result)

            %  get bootstrap ratio from boot_result
            %
            bs_ratio = boot_result.compare;
            bsr = bs_ratio;

            %  initialize bootstrap field
            %
            if isempty(bs_field)
               bs_field = erp_bs_option_ui('set_bs_fields',bsr);
               setting.bs_field = bs_field;
            end

            %  set amplitude to 1 if above threshold, 0 otherwise
            %
            for i = 1:lv
               too_large = find(bsr > (bs_field{i}.max_ratio));
               bsr(too_large) = bs_field{i}.max_ratio;

               too_small = find(bsr < (bs_field{i}.min_ratio));
               bsr(too_small) = bs_field{i}.min_ratio;

               bs_amplitude(:,i) = (abs(bsr(:,i)) >= (bs_field{i}.thresh));
            end

            %  selected_channels & selected_wave will be the same
            %
            bs_amplitude = reshape(bs_amplitude, [ti, ch, lv]);

            %  enable bootstrap option menu
            %
            set(hm_bs_option, 'visible', 'on');

         end	% exist('boot_result')

         bs_name = [];
         for i = 1:lv
            bs_name = [bs_name, {['LV',num2str(i)]}];
         end

         rescale = 0;
         setting.rescale = rescale;

      otherwise
         msg = 'ERROR: No this view option.';
         msgbox(msg,'ERROR','modal');
         return;
   end						% switch view_option

   if isempty(wave_amplitude) | isempty(wave_name)
      return;
   end

   if isempty(wave_selection)
      wave_selection = 1;
      setting.wave_selection = wave_selection;
   end

   if isempty(avg_selection)
      avg_selection = 0;
      setting.avg_selection = avg_selection;
   end

   if isempty(bs_selection)
      bs_selection = 1;
      setting.bs_selection = bs_selection;
   end

   color_code = ['b- ';'r- ';'m- ';'g- ';'c- ';'k- '];
%   load('rri_color_code');
   bs_color_code =[
       'bo';'rd';'m<';'g>';'bs';'rv';'m^';'gp';'bh';'rx';'m+';'g*';
       'ro';'gd';'m<';'b>';'rs';'gv';'m^';'bp';'rh';'gx';'m+';'b*';
       'go';'md';'b<';'r>';'gs';'mv';'b^';'rp';'gh';'mx';'b+';'r*';
       'mo';'bd';'r<';'g>';'ms';'bv';'r^';'gp';'mh';'bx';'r+';'g*'];

   if isempty(x_interval_selection)
      x_interval_selection = 1;
      setting.x_interval_selection = x_interval_selection;
   end

   if isempty(y_interval_selection)
      y_interval_selection = 1;
      setting.y_interval_selection = y_interval_selection;
   end

   if ~isequal(setting, old_setting)		% changed was made
      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;
   end

   % initialize setting
   %
   setappdata(h0,'setting',setting);
   setappdata(h0,'view_option',view_option);
   setappdata(h0,'datamat_file',datamat_file);
   setappdata(h0,'eta',eta);
   setappdata(h0,'org_wave_amplitude',org_wave_amplitude);
   setappdata(h0,'wave_amplitude',wave_amplitude);
   setappdata(h0,'brain_amplitude',wave_amplitude);
   setappdata(h0,'bs_amplitude',bs_amplitude);
   setappdata(h0,'bs_name',bs_name);
   setappdata(h0,'mean_wave_list',mean_wave_list);
   setappdata(h0,'mean_wave_name',mean_wave_name);
   setappdata(h0,'cond_couple_lst',cond_couple_lst);
   setappdata(h0,'org_wave_name',org_wave_name);
   setappdata(h0,'wave_name',wave_name);
   setappdata(h0,'wave_order',wave_order);
   setappdata(h0,'wave_selection',wave_selection);
   setappdata(h0,'avg_selection',avg_selection);
   setappdata(h0,'bs_selection',bs_selection);
   setappdata(h0,'bs_ratio',bs_ratio);
   setappdata(h0,'bs_field',bs_field);
   setappdata(h0,'color_code',color_code);
   setappdata(h0,'bs_color_code',bs_color_code);
   setappdata(h0,'x_interval_selection',x_interval_selection);
   setappdata(h0,'y_interval_selection',y_interval_selection);
   setappdata(h0,'rescale',rescale);
   setappdata(h0,'s',s);
   setappdata(h0,'font_size_selection',font_size_selection);
   setappdata(h0,'init_option',[]);
   setappdata(h0,'avg_amplitude',avg_amplitude);
   setappdata(h0,'avg_name',avg_name);
   setappdata(h0,'time_info',time_info);
   setappdata(h0,'session_info',session_info);
   setappdata(h0,'selected_channels',selected_channels);
   setappdata(h0,'selected_conditions',selected_conditions);
   setappdata(h0,'selected_subjects',selected_subjects);
   setappdata(h0,'selected_bs',selected_bs);
   setappdata(h0,'org_selected_wave',org_selected_wave);
   setappdata(h0,'selected_wave',selected_wave);
   setappdata(h0,'selected_wave_info',selected_wave_info);
   setappdata(h0,'chan_mask',chan_mask);
   setappdata(h0,'system',system);
   setappdata(h0,'num_group',num_group);

   old_pointer = get(h0,'pointer');
   set(h0,'pointer','watch');
   erp_showplot_ui(h0);
   set(h0,'pointer',old_pointer);

   return;					%  init


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

function choose_font_size

   h0 = getappdata(gcbf,'main_fig');
   h01 = getappdata(gcbf,'option_fig');
   font_size_hdl = getappdata(h01,'font_size_hdl');
   view_option = getappdata(h0,'view_option');
   datamat_file = getappdata(h0,'datamat_file');
   setting = getappdata(h0,'setting');

   font_size_selection = get(font_size_hdl,'value');
   setting.font_size_selection = font_size_selection;
   setappdata(h0,'font_size_selection',font_size_selection);

   setappdata(h0,'setting',setting);
   try
      switch view_option
         case {1}                               %  subj
            setting1 = setting;
            save(datamat_file, '-append', 'setting1');
         case {2}                               %  avg

⌨️ 快捷键说明

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