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

📄 gui_cb.m

📁 这个是基于独立主成分分析的一个MATLAB语言程序
💻 M
📖 第 1 页 / 共 2 页
字号:
function gui_cb(action)%% This file is used by FASTICAG% This file holds the callbacks to the main window% @(#)$Id: gui_cb.m,v 1.5 2003/09/10 10:33:41 jarmo Exp $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Global variables% Handle to the main figureglobal hf_FastICA_MAIN;% Handles for needed controls in main figure;global ht_FastICA_mixedStatus;global ht_FastICA_dim;global ht_FastICA_numOfSamp;global ht_FastICA_newDim;global ht_FastICA_whiteStatus;global ht_FastICA_icaStatus;global hpm_FastICA_approach;global he_FastICA_numOfIC;global hpm_FastICA_g;global hpm_FastICA_stabilization;% Main values are stored hereglobal g_FastICA_mixedsig;global g_FastICA_mixedmean;global g_FastICA_pca_D;global g_FastICA_pca_E;global g_FastICA_white_sig;global g_FastICA_white_wm;global g_FastICA_white_dwm;global g_FastICA_ica_sig;global g_FastICA_ica_A;global g_FastICA_ica_W;global g_FastICA_initGuess;global g_FastICA_approach;global g_FastICA_numOfIC;global g_FastICA_g;global g_FastICA_finetune;global g_FastICA_a1;global g_FastICA_a2;global g_FastICA_myy;global g_FastICA_stabilization;global g_FastICA_epsilon;global g_FastICA_maxNumIte;global g_FastICA_maxFinetune;global g_FastICA_sampleSize;global g_FastICA_initState;global g_FastICA_displayMo;global g_FastICA_displayIn;global g_FastICA_verbose;% String values are hereglobal c_FastICA_appr_strV;global c_FastICA_g1_strD;global c_FastICA_g1_strV;global c_FastICA_g2_strD;global c_FastICA_g2_strV;global c_FastICA_finetune_strD;global c_FastICA_finetune_strV;global c_FastICA_stabili_strV;global c_FastICA_iSta_strV;global c_FastICA_dMod_strV;global c_FastICA_verb_strV;% What is the load type of load dialogglobal g_FastICA_loadType;% Global variable for stopping the ICA calculationsglobal g_FastICA_interrupt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% What ever we do, it will take some time... not much, but some :-)watchonInFigure = watchon;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%switch action%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'InitAll' % If the data is already loaded, then get the information from data % and show to the user (also set g_FastICA_numOfIC) if ~isempty(g_FastICA_mixedsig)   set(ht_FastICA_mixedStatus, 'String', '');   [dim, numofsamp] = size(g_FastICA_mixedsig);   set(ht_FastICA_dim, 'String', int2str(dim));   set(ht_FastICA_numOfSamp, 'String', int2str(numofsamp));   set(ht_FastICA_newDim, 'String', int2str(dim));   set(he_FastICA_numOfIC, 'String', int2str(dim));   g_FastICA_numOfIC = dim;   g_FastICA_mixedmean = []; end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'LoadData' handle = findobj('Tag','f_FastICALoad');  % Check if the window is already if isempty(handle)                        % open. If not then open it.   pos = get(hf_FastICA_MAIN, 'Position');   % Based on the feedback obtained from some users, it seems   % that at least in some systems, pos can sometimes be empty. A   % similar check is done a few lines below.   if ~isempty (pos),     gui_l(pos(1), pos(2));   else     gui_l (0, 0);   end else   if strcmp(g_FastICA_loadType, 'data')   % Check if it was the same load     figure(handle);                       % window. If it wasn't then   else                                    % close the other window first     close(handle);                        % and then open the load window     fprintf('''Load initial guess'' -dialog closed!\n');     pos = get(hf_FastICA_MAIN, 'Position');     if ~isempty (pos),       gui_l(pos(1), pos(2));     else       gui_l (0, 0);     end   end end  % gui_cb NewData; - is called from the load function if not canceled...%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'NewData' % New data is loaded or the old data changed. We need to find out % somethings about the new data... and do some other stuff also... [dim, numofsamp] = size(g_FastICA_mixedsig); set(ht_FastICA_dim, 'String', dim); set(ht_FastICA_newDim, 'String', dim); set(ht_FastICA_numOfSamp, 'String', numofsamp); set(he_FastICA_numOfIC, 'String', int2str(dim));  g_FastICA_numOfIC = dim;    % Default for numOfIC = the new dimension			     % PCA needs to be calculated again. g_FastICA_pca_E = [];       % We use this to check if PCA is calculated gui_cb NullWhite;           % Whitening needs to be done again also %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'NullWhite' % Whitening needs to done again next time it's needed g_FastICA_white_sig = [];   % We use this to check if whitening is calculated gui_cb NullICA;             % The FPICA must be calculated again%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'NullICA' % If IC's are needed they have to bee calculated again g_FastICA_ica_sig = [];     % We use this to check if FPICA is calculated set(ht_FastICA_icaStatus,'String','Not yet done');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'Transpose' if isempty(g_FastICA_mixedmean)   g_FastICA_mixedsig = g_FastICA_mixedsig'; else   g_FastICA_mixedsig = (g_FastICA_mixedsig + ...			 g_FastICA_mixedmean * ...			 ones(1,size(g_FastICA_mixedsig, 2)))';   g_FastICA_mixedmean = []; end gui_cb NewData;             % Data has been changed%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'DoPCA' if ~isempty(g_FastICA_mixedsig)   % We'll remove mean of the data here also just in case...   if isempty(g_FastICA_mixedmean)     [g_FastICA_mixedsig, g_FastICA_mixedmean] = remmean(g_FastICA_mixedsig);   end      % Do PCA interactively: ask the user for eigenvalues   [g_FastICA_pca_E, g_FastICA_pca_D] = pcamat(g_FastICA_mixedsig, ...					       0, 0, 'gui', ...					       deblank(c_FastICA_verb_strV(g_FastICA_verbose,:)));      newdim = size(g_FastICA_pca_D, 1);   set(ht_FastICA_newDim, 'String', int2str(newdim));   set(he_FastICA_numOfIC, 'String', int2str(newdim));   g_FastICA_numOfIC = newdim;   gui_cb NullWhite;           % Whitening needs to be done again also			       % but we'll do it when it's needed. else   fprintf('Data not loaded yet!\n\n'); end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'OrigDim' gui_cb NewData;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'ShowMixed' if ~isempty(g_FastICA_mixedsig)   handle = findobj('Tag','f_FastICA_mix');  % Check if the window is already   if isempty(handle)                        % open. If not then open it.     figure('Tag', 'f_FastICA_mix', ...	    'Name', 'FastICA: Plot data', ...	    'NumberTitle', 'off');   else     figure(handle);     clf;		% clear the figure for next plots   end   if isempty(g_FastICA_mixedmean)     icaplot('dispsig',g_FastICA_mixedsig, 0, 0, 0, 'Mixed signals');   else     icaplot('dispsig',g_FastICA_mixedsig + g_FastICA_mixedmean * ...	     ones(1, size(g_FastICA_mixedsig, 2)), 0, 0, 0, 'Mixed signals');   end else   fprintf('Data not loaded yet!\n\n'); end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'ShowWhite' if ~isempty(g_FastICA_mixedsig)   if isempty(g_FastICA_white_sig)     % if whitening is not done, we need to     gui_cb Whiten;                    % do it before we can display the   end                                 % whitened signals      handle = findobj('Tag','f_FastICA_white');  % Check if the window is already   if isempty(handle)                          % open. If not then open it.     figure('Tag', 'f_FastICA_white', ...	    'Name', 'FastICA: Plot whitened', ...	    'NumberTitle', 'off');   else     figure(handle);     clf;		% clear the figure for next plots   end   icaplot('dispsig',g_FastICA_white_sig,0,0,0,'Whitened signals'); else   fprintf('Data not loaded yet!\n\n'); end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'Whiten' set(ht_FastICA_whiteStatus,'String','Computing...');  % If PCA is not calculated, we'll have to calculate it now, % we'll do it without guestions - we don't reduce the dimension % here - but PCAMAT might reduce the dimension automatically. if isempty(g_FastICA_pca_E)   % We'll remove mean of the data here also just in case...   if isempty(g_FastICA_mixedmean)     [g_FastICA_mixedsig, g_FastICA_mixedmean] = remmean(g_FastICA_mixedsig);   end      [g_FastICA_pca_E, g_FastICA_pca_D] = pcamat(g_FastICA_mixedsig, 1, ...					       size(g_FastICA_mixedsig, ...						    1), 'off', ...					       deblank(c_FastICA_verb_strV(g_FastICA_verbose,:)));      % Check if the dimension was reduced automatically   newdim = size(g_FastICA_pca_D, 1);   set(ht_FastICA_newDim, 'String', int2str(newdim));   % Check if the numOfIC now has illegal value entered    % We do that by telling the program that there is new value    % entered for NumOfIC.   gui_cb ChangeNumOfIC; end  % And now we can calculate whitening... [g_FastICA_white_sig, g_FastICA_white_wm, g_FastICA_white_dwm] = ...								  whitenv(g_FastICA_mixedsig, g_FastICA_pca_E, g_FastICA_pca_D, deblank(c_FastICA_verb_strV(g_FastICA_verbose,:)));  set (ht_FastICA_whiteStatus,'String','');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case 'ChangeApproach' % Get the old value for g eval(['g_str = c_FastICA_g' int2str(g_FastICA_approach) '_strV;']); old_g = deblank(g_str(g_FastICA_g,:));  % Get and set the new value for approach g_FastICA_approach = get(hpm_FastICA_approach, 'Value');  % The possible values for g depend on the value of approach... eval(['g_str = c_FastICA_g' int2str(g_FastICA_approach) '_strD;']);

⌨️ 快捷键说明

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