www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/wmpmoreoncfs.m
function varargout = wmpmoreoncfs(varargin) %WMPMOREONCFS Matching Pursuit more on coefficients. % VARARGOUT = WMPMOREONCFS(VARARGIN) % Last Modified by GUIDE v2.5 06-Jun-2011 09:12:23 % % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 10-May-2011. % Last Revision: 10-Jun-2013. % Copyright 1995-2013 The MathWorks, Inc. % $Revision: 1.1.6.9 $ $Date: 2013/07/05 04:30:46 $ %*************************************************************************% % BEGIN initialization code - DO NOT EDIT % % ---------------------------------------- % %*************************************************************************% gui_Singleton = 0; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @wmpmoreoncfs_OpeningFcn, ... 'gui_OutputFcn', @wmpmoreoncfs_OutputFcn, ... 'gui_LayoutFcn', [], ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end %*************************************************************************% % END initialization code - DO NOT EDIT % %*************************************************************************% %*************************************************************************% % BEGIN Opening Function % % ---------------------- % % --- Executes just before wmpmoreoncfs is made visible. % %*************************************************************************% function wmpmoreoncfs_OpeningFcn(hObject,eventdata,handles,varargin) % This function has no output args, see OutputFcn. % Choose default command line output for wmpmoreoncfs handles.output = hObject; % Update handles structure guidata(hObject, handles); %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% % TOOL INITIALIZATION Introduced manually in the automatic generated code % %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% Init_Tool(hObject,eventdata,handles,varargin{:}); %*************************************************************************% % END Opening Function % %*************************************************************************% %*************************************************************************% % BEGIN Output Function % % --------------------- % % --- Outputs from this function are returned to the command line. % %*************************************************************************% function varargout = wmpmoreoncfs_OutputFcn(hObject,eventdata,handles) % varargout cell array for returning output args (see VARARGOUT); % Get default command line output from handles structure varargout{1} = handles.output; %*************************************************************************% % END Output Function % %*************************************************************************% %=========================================================================% % BEGIN Callback Functions % % ------------------------ % %=========================================================================% %-------------------------------------------------------------------------- function Pus_CloseWin_Callback(hObject,eventdata,handles) %#ok<*DEFNU,*INUSD> close(gcbf) %-------------------------------------------------------------------------- %=========================================================================% % END Callback Functions % %=========================================================================% %=========================================================================% % BEGIN Tool Initialization % % ------------------------- % %=========================================================================% function Init_Tool(hObject,eventdata,handles,varargin) % WTBX -- Install DynVTool. %-------------------------- dynvtool('Install_V3',hObject,handles); % WTBX -- Initialize GUIDE Figure. %--------------------------------- wfigmngr('beg_GUIDE_FIG',hObject); % WTBX MENUS (Install) %--------------------- hdl_Menus = Install_MENUS(hObject); wtbxappdata('set',hObject,'hdl_Menus',hdl_Menus); % WTBX -- Install COLORMAP FRAME %------------------------------- utcolmap('Install_V3',hObject,'Enable','On'); default_nbcolors = 128; cbcolmap('set',hObject,'pal',{'jet',default_nbcolors}) % Setting defaults. %-------------------------------- Prefs = mextglob('get','WTBX_Preferences'); ax = wfindobj(hObject,'type','axes'); set(ax,'FontUnits','point', ... 'FontName',Prefs.DefaultAxesFontName,'FontSize',8); set(ax,'DefaultTextFontUnits','point', ... 'DefaultTextFontName',Prefs.DefaultTextFontName,... 'DefaultTextFontSize',8); set(ax,'GridColor','k') set(ax,'GridLineStyle',':') % WTBX -- Terminate GUIDE Figure. %-------------------------------- wfigmngr('end_GUIDE_FIG',hObject,mfilename); % Initialize TooltipStrings. %--------------------------- % Add Context Sensitive Help (CSHelp). %------------------------------------- % Initialize Analysis Parameters. %-------------------------------- caller_Handles = varargin{1}; caller_FIG = caller_Handles.output; Axe_SIG = caller_Handles.Axe_SIG; % Analysis parameters. lev = 4; dirDec = 'r'; wname = 'haar'; % Get Components. lin_COMPO = wtbxappdata('get',caller_FIG,'lin_COMPO'); nbCPT = length(lin_COMPO); nbCPT = nbCPT-1; % The last is the signal. TMP = get(lin_COMPO(1),'YData'); nbVAL = length(TMP); CPT = zeros(nbCPT,nbVAL); for k = 1:nbCPT , CPT(k,:) = get(lin_COMPO(k),'YData'); end wtbxappdata('set',hObject,'CPT',CPT); LstCPT = wtbxappdata('get',caller_FIG,'LstCPT'); set(handles.Pop_FRQ_CPT,'String', [LstCPT,'Signal'],'Value',1) % Wavelet packets decomposition. [dec,coefs] = mwptdec(dirDec,CPT,lev,wname); %#ok<ASGLU> % Compute Frequential order nbPCK = (2^lev); freqORD_FLAG = true; if freqORD_FLAG frqord = wpfrqord((nbPCK-1:2*nbPCK-1)'); [~,cfsORD] = sort(frqord); else cfsORD = 1:nbPCK; %#ok<*UNRCH> end wtbxappdata('set',hObject,'coefs',coefs,'lev',lev,'cfsORD',cfsORD, ... 'caller_FIG',caller_FIG,'Axe_SIG',Axe_SIG, ... 'caller_Handles',caller_Handles); Init_TABLE(caller_Handles,handles) sigNAM = get(caller_Handles.Edi_Sig_NAM,'String'); set(handles.Edi_Sig_NAM,'String',sigNAM); set(handles.Pop_SEL_FAM,'String',LstCPT); plot_SIG_and_APP(caller_FIG,handles) Pop_Mode_MORE_Callback(hObject,eventdata,handles) %------------------------------------------------------------------------- %=========================================================================% % END Tool Initialization % %=========================================================================% %=========================================================================% % BEGIN Internal Functions % % ------------------------ % %=========================================================================% function hdl_Menus = Install_MENUS(fig) % Add UIMENUS. %------------- m_files = wfigmngr('getmenus',fig,'file'); m_close = wfigmngr('getmenus',fig,'close'); cb_close = [mfilename '(''Pus_CloseWin_Callback'',gcbo,[],guidata(gcbo));']; set(m_close,'Callback',cb_close); % Add Help for Tool. %------------------ wfighelp('addHelpTool',fig,getWavMSG('Wavelet:wmp1dRF:MP_ALG'),'WMP_TOOL'); % Menu handles. %---------------- hdl_Menus = struct('m_files',m_files,'m_close',m_close); %=========================================================================% % END Internal Functions % %=========================================================================% %-------------------------------------------------------------------------- function Pop_Mode_MORE_Callback(hObject,eventdata,handles) %#ok<*INUSL> % Initialization of parameters. [coefs,cfsORD,lev,caller_Handles,caller_FIG,Axe_SIG] = ... wtbxappdata('get',hObject,'coefs','cfsORD','lev',... 'caller_Handles','caller_FIG','Axe_SIG'); local_Fig = handles.output; % Plot Parameters. NBC = 192; % Number of colors in colormap. LC = [1 0 1]; % Color of main lines LC2 = [0 0.7 0]; % Color of main lines LW = 2; % Width of main lines nbPCK = (2^lev); sizCFS = size(coefs); nbCPT = sizCFS(1)/nbPCK; coefs_INI = coefs; beg = 1; first = 1; approx_FLAG = true; ax_SIG = handles.Axe_SIG_MORE; ax_CFS = handles.Axe_CFS_MORE; ax_CPT = handles.Axe_for_CPT; PlotMODE = get(handles.Pop_Mode_MORE,'Value'); hCB = wfindobj(local_Fig,'type','axes','Tag','Colorbar'); hLEG = wfindobj(local_Fig,'type','axes','Tag','legend'); hSig_ANAL = wfindobj(caller_FIG,'Type','line','Tag','Sig_ANAL'); lenSIG = length(get(hSig_ANAL,'XData')); switch PlotMODE case {1,2} appCur = wtbxappdata('get',local_Fig,'appCur'); if ishandle(appCur) , delete(appCur); end hOFF = [ax_CPT ; allchild(ax_CPT) ; ... handles.uitable_CFS ; handles.Pan_INFO_CFS; handles.Pan_FREQ]; hON = [ax_SIG ; allchild(ax_SIG); ax_CFS ; hCB ; hLEG]; case 3 hOFF = [ax_CFS ; allchild(ax_CFS); hCB ; hLEG ; handles.Pan_FREQ]; hON = [ax_SIG ; allchild(ax_SIG); ax_CPT ; ... handles.uitable_CFS ; handles.Pan_INFO_CFS]; case 4 hOFF = [... ax_SIG ; allchild(ax_SIG); ... ax_CFS ; allchild(ax_CFS); hCB ; hLEG ; ... ax_CPT ; allchild(ax_CPT) ; handles.uitable_CFS ; ... handles.Pan_INFO_CFS]; hON = [handles.Pan_FREQ]; end set(hOFF,'Visible','Off'); set(hON,'Visible','On'); switch PlotMODE case {1,'byCPN'} while first<sizCFS(1) last = first+nbPCK-1; TMP = coefs_INI(beg:nbCPT:end,:); coefs(first:last,:) = TMP(cfsORD,:); coefs(first,:) = 0; first = last+1; beg = beg+1; end if approx_FLAG beg = 1; first = 1; while first<sizCFS(1) last = first+nbPCK-1; coefs(first,:) = wcodemat(coefs(beg,:),NBC,'mat',0); maxi = max(abs(coefs(first,:))); coefs(first,:) = coefs(first,:)/(20*maxi); first = last+1; beg = beg+1; end end imagesc(coefs,'Parent',ax_CFS,... 'Tag','Img_WPCfs','Userdata',[PlotMODE,lenSIG]); colormap(jet(NBC)); set(ax_CFS,'Ydir','Normal','Ytick',[]) set(ax_CFS,'Xlim',[0.5 sizCFS(2)+0.5],'Ylim',[0.5 sizCFS(1)+0.5]) xl = get(ax_CFS,'Xlim'); yl = get(ax_CFS,'Ylim'); hold on; yini = yl(1); deltay = (yl(2)-yl(1))/nbCPT; for k = 1:nbCPT-1 ycur = yini+k*deltay; line('XData',xl,'YData',[ycur,ycur], ... 'Linewidth',LW,'Color',LC,'Parent',ax_CFS); end xtick = get(Axe_SIG,{'XTick','XTickLabel'}); ytick = yini + deltay*(0.5:nbCPT); set(ax_CFS,'XTick',xtick{1}/nbPCK,'XTickLabel',xtick{2}); LstCPT = wtbxappdata('get',caller_FIG,'LstCPT'); set(ax_CFS,'YTick',ytick,'YTickLabel',LstCPT); % if lev<5 % dy = deltay/nbPCK; % for k = 1:nbCPT % ycur = yini+(k-1)*deltay; % for j = 1:nbPCK-1 % ycur = ycur+dy; % line('XData',xl,'YData',[ycur,ycur], ... % 'Linewidth',0.5,'LineStyle',':',... % 'Color',1-[1 1 1],'Parent',ax_CFS); % end % end % end ylabel('','Parent',ax_CFS) case {2,'byPCK'} if approx_FLAG first = 1; last = first+nbCPT-1; maxi = max(abs(coefs(:))); coefs(first:last,:) = coefs(first:last,:)/maxi; end imagesc(coefs,'Parent',ax_CFS,... 'Tag','Img_WPCfs','Userdata',[PlotMODE,lenSIG]); colormap(jet(NBC)); set(ax_CFS,'Ydir','Normal','Ytick',[]) xl = get(ax_CFS,'Xlim'); yl = get(ax_CFS,'Ylim'); hold on; yini = yl(1); deltay = (yl(2)-yl(1))/nbPCK; for k = 1:nbPCK-1 ycur = yini+k*deltay; line('XData',xl,'YData',[ycur,ycur], ... 'Linewidth',LW,'Color',LC2,'Parent',ax_CFS); end xtick = get(Axe_SIG,{'XTick','XTickLabel'}); ytick = yini + deltay*(0.5:nbPCK); ytlab = int2str((1:nbPCK)'); set(ax_CFS,'XTick',xtick{1}/nbPCK,'XTickLabel',xtick{2}); set(ax_CFS,'YTick',ytick,'YTickLabel',ytlab); % if lev<5 % dy = deltay/nbCPT; % for k = 1:nbPCK % ycur = yini+(k-1)*deltay; % for j = 1:nbPCK-1 % ycur = ycur+dy; % if rem(j,nbCPT)>0 % line('XData',xl,'YData',[ycur,ycur], ... % 'Linewidth',0.5,'LineStyle',':',... % 'Color',1-[1 1 1],'Parent',ax_CFS); % end % end % end % end ylabel(getWavMSG('Wavelet:wmp1dRF:Lab_IndORPck'),'Parent',ax_CFS) case {3,'byCFS'} plotCFS(caller_Handles,handles) case 4 % Not Used Pop_FRQ_CPT_Callback(handles.Pop_FRQ_CPT,eventdata,handles) end switch PlotMODE case {1,2} set(ax_CFS,'Xlim',[0.5 sizCFS(2)+0.5],'Ylim',[0.5 sizCFS(1)+0.5]) Add_ColorBar(ax_CFS); title(getWavMSG('Wavelet:wmp1dRF:WPACK_anal',lev), ... 'Parent',ax_CFS); set(ax_CFS,'NextPlot','ReplaceChildren'); dynvtool('init',local_Fig,[], ... [ax_SIG,ax_CFS],[],[1 0],'','','wmp1dcoor',ax_CFS); case 3 dynvtool('init',local_Fig,[],[ax_SIG,ax_CPT],[],[0 0],'','',''); case 4 dynvtool('init',local_Fig,[],[handles.Axe_FRQ_SIG, ... handles.Axe_FRQ_SPEC,handles.Axe_FRQ_PER],[],[0 0],'','',''); end %-------------------------------------------------------------------------- function hC = Add_ColorBar(hA) pA = get(hA,'Position'); hC = wfindobj(get(hA,'Parent'),'Tag','Colorbar'); if ishandle(hC) , delete(hC); end hC = colorbar('peer',hA,'SouthOutside'); set(hA,'Position',pA); pC = get(hC,'Position'); set(hC,'Position',[pA(1)+pA(3)/3 pA(2)-1.5*pC(4) pC(3)/3 pC(4)/2],... 'FontSize',8) ud.dynvzaxe.enable = 'Off'; ud.Parent = hA; set(hC,'UserData',ud); %-------------------------------------------------------------------------- function plot_SIG_and_APP(caller_FIG,handles) axe_SIG_MORE = handles.Axe_SIG_MORE; hSig_ANAL = wfindobj(caller_FIG,'Type','line','Tag','Sig_ANAL'); hSig_APPROX = wfindobj(caller_FIG,'Type','line','Tag','Sig_APPROX'); xval = get(hSig_ANAL,'XData'); Sig_ANAL = get(hSig_ANAL,'YData'); Sig_APPROX = get(hSig_APPROX,'YData'); hL = plot(xval,Sig_ANAL,'r-',xval,Sig_APPROX,'b-',... 'Parent',axe_SIG_MORE); tmp = [Sig_ANAL(:);Sig_APPROX(:)]; mini = min(tmp); maxi= max(tmp); set(axe_SIG_MORE,'Xlim',[1 length(Sig_ANAL)],'Ylim',[mini,maxi]) set(hL(1),'Tag','Sig_ANAL'); set(hL(2),'Tag','Sig_APPROX'); set(hL,'Linewidth',1.5) axCur = legend(axe_SIG_MORE,... getWavMSG('Wavelet:wmp1dRF:Leg_Sig'),... getWavMSG('Wavelet:wmp1dRF:Leg_App'),'Location','NorthWest'); ud = get(axCur,'UserData'); ud.Parent = axe_SIG_MORE; ud.dynvzaxe.enable = 'Off'; set(axCur,'UserData',ud); title(getWavMSG('Wavelet:wmp1dRF:Title_Sig_App'),'Parent',axe_SIG_MORE); set(axe_SIG_MORE,'XGrid','On','YGrid','On'); %-------------------------------------------------------------------------- function plotCFS(caller_Handles,handles) local_FIG = handles.output; caller_FIG = caller_Handles.output; nbVect = wtbxappdata('get',caller_FIG,'MP_nbVect'); MP_Results = wtbxappdata('get',caller_FIG,'MP_Results'); nV = length(nbVect); IOPT = MP_Results{4}; ax_SIG = handles.Axe_SIG_MORE; ax_CPT = handles.Axe_for_CPT; delete(allchild(ax_CPT)); LstCPT = get(caller_Handles.Lst_CMP_DICO,'String'); Data_CFS = wtbxappdata('get',local_FIG,'Data_CFS'); set(handles.uitable_CFS,'Data',Data_CFS); set(ax_CPT,'NextPlot','Add'); %-------------------------------------------- % Color and parameters used for plotting. %---------------------------------------- txtColor = get(get(ax_CPT,'Parent'),'Color'); M1 = jet(5); M2 = hsv(5); M2([1 4],:) = [1 0.5 0.5;0.4 0.4 0.9]; map = [M1;M2;cool(nV)]; ColTab = num2cell(map,2)'; idx_DCT = strcmp(LstCPT,'dct'); idx_COS = strcmp(LstCPT,'cos'); idx_SIN = strcmp(LstCPT,'sin'); idx_POL = strcmp(LstCPT,'poly'); if any(idx_DCT) , ColTab{idx_DCT} = [0.8 0.0 0.8]; end if any(idx_COS) , ColTab{idx_COS} = [0.85 0.85 0.0]; end if any(idx_SIN) , ColTab{idx_SIN} = [0.0 0.8 0.8]; end if any(idx_POL) , ColTab{idx_POL} = [0.0 0.0 0.0]; end FontU = 'point'; FontN = get(local_FIG,'DefaultAxesFontName'); FontW = 'normal'; FontS = 8; %---------------------------------------------------------- nbcfsTOT = 0; first = 1; for jjj = 1:nV idx_jjj = (nV+1-jjj); nbval = nbVect(jjj); last = first+nbval-1; yy = idx_jjj*ones(1,nbval); xx = (1:nbval)/nbval; plot([0 xx],[idx_jjj yy],'-k','Parent',ax_CPT); tf = ismember(IOPT,first:last); nbcfs = sum(tf); nbcfsTOT = nbcfsTOT+nbcfs; if ~isempty(tf) && any(tf) index = IOPT(tf)-first+1; yytf = yy(index) + 0.5 ; XXX = [repmat(xx(index),2,1) ; NaN(1,size(xx(index),2))]; XXX = XXX(:); YYY = [yytf ; yy(index) ; NaN(size(yytf))]; YYY = YYY(:); plot(XXX,YYY,'Color',ColTab{jjj},'LineStyle','-',... 'Parent',ax_CPT); plot(xx(index),yytf,'Color',ColTab{jjj}, ... 'LineStyle','none','Marker','s',... 'MarkerFaceColor',ColTab{jjj}, ... 'MarkerSize',5,'Parent',ax_CPT, ... 'ButtonDownFcn','win_Atom_BtnDown_FCN'); end first = last+1; tagTXT = ['txt_' int2str(jjj)]; txtEFF = wfindobj(ax_CPT,'Type','text','Tag',tagTXT); strEFF = [int2str(nbcfs) ' / ' int2str(nbval)]; if isempty(txtEFF) text(1.025,yy(1)+0.25,strEFF,... 'BackgroundColor',txtColor,... 'EdgeColor',[0.5 0.5 0.5],... 'HorizontalAlignment','left',... 'FontUnits',FontU,'FontName',FontN, ... 'FontSize',FontS,'FontWeight',FontW,... 'Tag',tagTXT,'Parent',ax_CPT); else set(txtEFF,'String',strEFF); end end set(ax_CPT,'Xlim',[0 1],'Ylim',[0.5,nV+1]); strEFF = [int2str(nbcfsTOT) ' / ' int2str(sum(nbVect))]; title(getWavMSG('Wavelet:wmp1dRF:Ind_of_Sel',strEFF),'Parent',ax_CPT) set(ax_CPT,'Xtick',[],'XTicklabel','',... 'Ytick',(1:nV),'YTicklabel',LstCPT(end:-1:1)); appCur = wfindobj(ax_SIG,'Type','line','Tag','appCur'); if isempty(appCur) hSig_ANAL = wfindobj(caller_FIG,'Type','line','Tag','Sig_ANAL'); xval = get(hSig_ANAL,'XData'); appCur = line('XData',xval,'YData',zeros(size(xval)),... 'Color',[0 0.7 0],'Linewidth',2,'Tag','appCur','Parent',ax_SIG); else xval = get(appCur,'XData'); set(appCur,'YData',zeros(size(xval))); end wtbxappdata('set',handles.output,'appCur',appCur); %-------------------------------------------------------------------------- %-------------------------------------------------------------------------- function Init_TABLE(caller_Handles,handles) local_FIG = handles.output; caller_FIG = caller_Handles.output; nbVect = wtbxappdata('get',caller_FIG,'MP_nbVect'); nV = length(nbVect); MP_Results = wtbxappdata('get',caller_FIG,'MP_Results'); [COEFF,IOPT] = deal(MP_Results{3:4}); nbCFS = length(IOPT); IdxOfFam = zeros(nbCFS,1); cumLEN =[1 1+cumsum(nbVect)]; for k = 1:nV IdxOfFam(cumLEN(k)<=IOPT & IOPT<cumLEN(k+1)) = k; end IdxInFAM = cell(nV,1); xyLOC = zeros(nbCFS,2); locInFAM = cell(nV,1); nbcfsTOT = 0; first = 1; NumOfFam = zeros(size(IOPT)); for idxFAM = 1:nV nbval = nbVect(idxFAM); last = first+nbval-1; xx = (1:nbval)/nbval; yy = (nV+1-idxFAM)*ones(1,nbval); tf = ismember(IOPT,first:last); NumOfFam(tf) = idxFAM; nbcfs = sum(tf); nbcfsTOT = nbcfsTOT+nbcfs; if ~isempty(tf) && any(tf) index = IOPT(tf)-first+1; XP = xx(index); YP = yy(index) + 0.5; xyLOC(tf,1) = XP(:); xyLOC(tf,2) = YP(:); IdxInFAM{idxFAM} = index; locInFAM{idxFAM} = [XP;YP]'; end first = last+1; end Data_CFS = cell(nbCFS,6); Data_CFS(:,1) = num2cell(false(nbCFS,1)); Data_CFS(:,2) = num2cell(COEFF(1:nbCFS)); Data_CFS(:,3) = num2cell((1:nbCFS)'); Data_CFS(:,4) = num2cell(IdxOfFam(:)); Data_CFS(:,5) = num2cell(IOPT(:)); Data_CFS(:,6) = num2cell(cat(2,IdxInFAM{:})'); wtbxappdata('set',local_FIG,'Data_CFS',Data_CFS); wtbxappdata('set',local_FIG,'xyLOC',xyLOC); wtbxappdata('set',local_FIG,'IdxInFAM',IdxInFAM); wtbxappdata('set',local_FIG,'locInFAM',locInFAM); %-------------------------------------------------------------------------- % --- Executes when entered data in editable cell(s) in uitable_CFS. function uitable_CFS_CellEditCallback(hObject,eventdata,handles,arg) % hObject handle to uitable_CFS (see GCBO) % eventdata structure with the following fields (see UITABLE) % Indices: row and column indices of the cell(s) edited % PreviousData: previous data for the cell(s) edited % EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty % if Data was not changed % Error: error string when failed to convert EditData to appropriate % value for Data % handles structure with handles and user data (see GUIDATA) if nargin<4 Idx_CELL = eventdata.Indices; if ~isequal(Idx_CELL(2),1) , return; end end fig = handles.output; [~,caller_FIG] = wtbxappdata('get',fig,'caller_Handles','caller_FIG'); DICO = wtbxappdata('get',caller_FIG,'MP_Dictionary'); appCur = wtbxappdata('get',fig,'appCur'); uitCFS = get(handles.uitable_CFS); Data = uitCFS.Data; C1 = Data(:,1); C1 = cat(1,C1{:}); Idx = find(C1); ydata = 0; nbSEL = length(Idx); for kk = 1:nbSEL ydata = ydata + Data{Idx(kk),2}*DICO(:,Data{Idx(kk),5}); end if isequal(nbSEL,0) ydata = zeros(size(get(appCur,'XData'))); end set(appCur,'YData',ydata) ax = get(appCur,'Parent'); axis(ax,'tight') % MP_Results = wtbxappdata('get',caller_FIG,'MP_Results'); % IOPT = MP_Results{4}; % ORD = cat(1,Data{:,4})'; xyLOC = wtbxappdata('get',fig,'xyLOC'); [~,CC] = sort(cat(1,Data{:,3})); [~,DD] = sort(CC); xyLOC = xyLOC(DD,:); xyLOC = xyLOC(Idx,:); ax = handles.Axe_for_CPT; CFS_SEL = wfindobj(ax,'Type','line','Tag','Pts_CFS_SEL'); delete(CFS_SEL) MCol = [1 0 0]; line('XData',xyLOC(:,1),'YData',xyLOC(:,2),'Color',MCol,... 'Marker','s','MarkerSize',5,'MarkerEdgeColor',MCol,... 'MarkerFaceColor',MCol,'LineStyle','none',... 'ButtonDownFcn','win_Atom_BtnDown_FCN',... 'Tag','Pts_CFS_SEL','Parent',ax) hSig_ANAL = wfindobj(caller_FIG,'Type','line','Tag','Sig_ANAL'); Y = get(hSig_ANAL,'YData'); R = Y(:)-ydata(:); COEFF = cat(1,Data{Idx,2}); qual = 100*norm(COEFF)^2/norm(Y)^2; ErrL1 = 100*(norm(R,1)/norm(Y,1)); ErrL2 = 100*(norm(R)/norm(Y)); ErrMax = 100*(norm(R,Inf)/norm(Y,Inf)); set(handles.Edi_QUAL,'String',sprintf('%5.2f %%',qual)); set(handles.Edi_Err_L2,'String',sprintf('%5.2f %%',ErrL2)); set(handles.Edi_Err_L1,'String',sprintf('%5.2f %%',ErrL1)); set(handles.Edi_Err_MAX,'String',sprintf('%5.2f %%',ErrMax)); %-------------------------------------------------------------------------- % --- Executes when selected cell(s) is changed in uitable_CFS. function uitable_CFS_CellSelectionCallback(hObject,eventdata,handles) % hObject handle to uitable_CFS (see GCBO) % eventdata structure with the following fields (see UITABLE) % Indices: row and column indices of the cell(s) currently selecteds % handles structure with handles and user data (see GUIDATA) Idx_CELL = eventdata.Indices; if isempty(Idx_CELL) || isequal(Idx_CELL(2),1) , return; end %-------------------------------------------------------------------------- function Pus_SORT_Callback(hObject,eventdata,handles,arg) val = get(handles.Pop_SORT_Table,'Value'); D = get(handles.uitable_CFS,'Data'); switch val case {1} % Value D = sortrows(D,val+1); case 2 % Absolute value [~,Is] = sort(abs(cat(1,D{:,2}))); D = D(Is,:); case {3,4,5,6} % Rank , Family , Ndx in Dicto, Ndx in Fam. , D = sortrows(D,val); end if isequal(arg,-1) , D = D(end:-1:1,:); end set(handles.uitable_CFS,'Data',D); %-------------------------------------------------------------------------- function Pus_SEL_CPT_Callback(hObject,eventdata,handles) val_SEL_CPT = get(handles.Pop_SEL_CPT,'Value'); uitCFS = get(handles.uitable_CFS); D = uitCFS.Data; switch val_SEL_CPT case {1,2} if isequal(val_SEL_CPT,1) , bool = {false}; else bool = {true}; end D(:,1) = bool; case 3 val_FAM = get(handles.Pop_SEL_FAM,'Value'); TMP = sortrows(D,3); II = cat(1,TMP{:,4})==val_FAM; TMP(:,1) = num2cell(II); [~,II] = sort(II,'descend'); TMP = TMP(II,:); D = TMP; end set(handles.uitable_CFS,'Data',D); uitable_CFS_CellEditCallback(handles.uitable_CFS,eventdata,handles,'pop') %-------------------------------------------------------------------------- function Pop_SEL_CPT_Callback(hObject,eventdata,handles) val = get(hObject,'Value'); switch val case {1,2} , vis = 'Off'; case 3 , vis = 'On'; end set(handles.Pop_SEL_FAM,'Visible',vis); %-------------------------------------------------------------------------- function Pop_SEL_FAM_Callback(hObject,eventdata,handles) %-------------------------------------------------------------------------- function Pop_FRQ_CPT_Callback(hObject,eventdata,handles) % Not Used caller_FIG = wtbxappdata('get',hObject,'caller_FIG'); val = get(hObject,'Value'); lst = get(hObject,'String'); strTITLE = lst{val}; if ~isequal(val,length(lst)) strTITLE = ['Component: ' strTITLE]; end lin_CPT = wtbxappdata('get',caller_FIG,'lin_COMPO'); window = 64; overlap = 63; signal = get(lin_CPT(val),'YData'); mini = min(signal); maxi = max(signal); if isequal(mini,maxi) , mini = mini-0.01; maxi = maxi+0.01; end plot(signal,'r','Parent',handles.Axe_FRQ_SIG); title(strTITLE,'Parent',handles.Axe_FRQ_SIG); set(handles.Axe_FRQ_SIG,'Xlim',[1,length(signal)],... 'Ylim',[mini,maxi]); set(handles.Axe_FRQ_SIG,'Nextplot','ReplaceChildren') axes(handles.Axe_FRQ_PER); periodogram(signal); axis tight; pause(0.05); set(handles.Axe_FRQ_PER,'Nextplot','ReplaceChildren') axes(handles.Axe_FRQ_SPEC); spectrogram(signal,window,overlap,'yaxis'); axis tight; % xt = get(handles.Axe_FRQ_SIG,'XtickLabel'); % xL1 = get(handles.Axe_FRQ_SIG,'Xlim'); % xL2 = get(handles.Axe_FRQ_SPEC,'Xlim'); % set(handles.Axe_FRQ_SPEC,'XtickLabel',''); pause(0.05); set(handles.Axe_FRQ_SPEC,'Nextplot','ReplaceChildren') %--------------------------------------------------------------------------