Home > Codi > Menu_Projecta_Dades_PCA.m

Menu_Projecta_Dades_PCA

PURPOSE ^

Pantalla per crear projeccións a partir d'un objecte PCA-model i un

SYNOPSIS ^

function varargout = Menu_Projecta_Dades_PCA(varargin)

DESCRIPTION ^

Pantalla per crear projeccións a partir d'un objecte PCA-model i un
objecte DATA que conte les dades a ser projectedes. Els 2 objectes s'han
de trovar al workspace.

L'objecte projectat se li asignara el nom escollit per l'usuari i es
deixara al workspace.

Per invocar directament des de consola aquesta pantalla nomes cal
invocar-ne la funcio sense cap parametre extra:
Menu_Projecta_Dades_PCA();

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function varargout = Menu_Projecta_Dades_PCA(varargin)
0002 %Pantalla per crear projeccións a partir d'un objecte PCA-model i un
0003 %objecte DATA que conte les dades a ser projectedes. Els 2 objectes s'han
0004 %de trovar al workspace.
0005 %
0006 %L'objecte projectat se li asignara el nom escollit per l'usuari i es
0007 %deixara al workspace.
0008 %
0009 %Per invocar directament des de consola aquesta pantalla nomes cal
0010 %invocar-ne la funcio sense cap parametre extra:
0011 %Menu_Projecta_Dades_PCA();
0012 %
0013 gui_Singleton = 1;
0014 gui_State = struct('gui_Name',       mfilename, ...
0015                    'gui_Singleton',  gui_Singleton, ...
0016                    'gui_OpeningFcn', @Menu_Projecta_Dades_PCA_OpeningFcn, ...
0017                    'gui_OutputFcn',  @Menu_Projecta_Dades_PCA_OutputFcn, ...
0018                    'gui_LayoutFcn',  [] , ...
0019                    'gui_Callback',   []);
0020 if nargin && ischar(varargin{1})
0021     gui_State.gui_Callback = str2func(varargin{1});
0022 end
0023 
0024 if nargout
0025     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
0026 else
0027     gui_mainfcn(gui_State, varargin{:});
0028 end
0029 
0030 function Menu_Projecta_Dades_PCA_OpeningFcn(hObject, ~, handles, varargin)
0031 %funció que s'invoca en crear la finestra a varargin ens arriven el
0032 %possibles parametres extres d'invocació de Pantalla. No els
0033 %utilitzarem per res. hObject i handles els modificarem.
0034 
0035 handles.output = hObject;
0036 guidata(hObject, handles);
0037 
0038 %busquem objectes DATA i PCA i fem les 2 llistes de cop
0039 x=evalin('base','whos();');
0040 list=[];
0041 list2=[];
0042 for i=1:length(x)
0043     if strcmp(x(i).class,'DATA') ~=0
0044        list=[list; {x(i).name}];
0045     end
0046     
0047     if strcmp(x(i).class,'PCA') ~=0
0048         if evalin('base',[x(i).name '.isModel();'])
0049             list2=[list2; {x(i).name}];
0050         end
0051     end
0052 end
0053 %comprovem si ni havien i posem els valors al seu lloc
0054 if isempty(list)
0055     list={'No DATA object in workspace'};
0056 end
0057 set(handles.dades,'String',list);
0058 if isempty(list2)
0059     list2={'No PCA object in workspace'};
0060 end
0061 set(handles.PCAmodels,'String',list2);
0062 
0063 function LoadPCA_Callback(~, ~, handles)
0064 uiwait(Menu_Crea_Model_PCA());
0065 %busquem PCA i model
0066 x=evalin('base','whos();');
0067 list=[];
0068 for i=1:length(x)
0069     if strcmp(x(i).class,'PCA') ~=0
0070         if evalin('base',[x(i).name '.isModel();'])
0071             list=[list; {x(i).name}];
0072         end
0073     end
0074 end
0075 if isempty(list)
0076     list={'No DATA object in workspace'};
0077 end
0078 set(handles.PCAmodels,'String',list);
0079 
0080 function pushbutton2_Callback(~, ~, handles)
0081 uiwait(Menu_Load_Dades());
0082 %busquem objectes dades
0083 x=evalin('base','whos();');
0084 list=[];
0085 for i=1:length(x)
0086     if strcmp(x(i).class,'DATA') ~=0 
0087        list=[list; {x(i).name}];
0088     end
0089 end
0090 if isempty(list)
0091     list={'No DATA object in workspace'};
0092 end
0093 set(handles.dades,'String',list);
0094 
0095 function Genera_Callback(~, ~, handles)
0096 try
0097     %recuperem els noms del Model i de l'DATA
0098     variable=get(handles.dades,'String');
0099     variable=variable{get(handles.dades,'Value')};
0100     pc=get(handles.PCAmodels,'String');
0101     pc=pc{get(handles.PCAmodels,'Value')};
0102     
0103     %Nom que vol l'usuari a la variable
0104     nom=get(handles.edit1,'String');
0105     
0106     
0107     if ~isempty(evalin('base',['whos(''' nom ''')'] ))
0108         choice = questdlg('Selected name is in use, do you want to overwride?', 'Attention', 'Yes','No','No');
0109         switch choice
0110             case 'Si'
0111                 %Sobreescriure
0112                 inst=[ nom '=' pc '.project(' variable ');'];
0113                 evalin('base',inst);
0114                 
0115                 close('Menu_Projecta_Dades_PCA');
0116                 Update_Caller();
0117                 
0118             case 'No'
0119                 %No fer res
0120         end
0121     else
0122         %No hi ha nom repetit
0123         inst=[ nom '=' pc '.project(' variable ');'];
0124         evalin('base',inst);
0125         
0126         close('Menu_Projecta_Dades_PCA');
0127         Update_Caller();
0128     end
0129     
0130 catch err
0131     errordlg(err.message,'Error');
0132 end
0133 
0134 function Update(hObject, ~, handles) 
0135 handles.output = hObject;
0136 
0137 %Tornem a crear la llista d'objectes DATA
0138 x=evalin('base','whos();');
0139 list=[];
0140 list2=[];
0141 for i=1:length(x)
0142     if strcmp(x(i).class,'DATA') ~=0 
0143         list=[list; {x(i).name}];
0144     end
0145     
0146     if strcmp(x(i).class,'PCA') ~=0 
0147         if evalin('base',[x(i).name '.isModel();'])
0148             list2=[list2; {x(i).name}];
0149         end
0150     end
0151 end
0152 
0153 %Actualitzem llista de DATA
0154 if isempty(list)
0155     list={'No DATA object in workspace'};
0156 end
0157 
0158 %busquem el valor que te el popupmenu actualment
0159 nom=get(handles.dades,'String');
0160 nom=nom{get(handles.dades,'Value')};
0161 
0162 %busquem aquest nom entre la llista actual
0163 
0164 val=find(strcmp(nom,list));
0165 set(handles.dades,'String',list);
0166 
0167 if isempty(val)
0168     set(handles.dades,'Value',1);
0169        
0170 else
0171     set(handles.dades,'Value',val);
0172 end
0173 
0174 
0175 %Actualitzem llista de PCA
0176 
0177 %no cal tornar a fer el bucle ho hem posat tot en 1!
0178 if isempty(list2)
0179     list2={'No PCA object in workspace'};
0180 end
0181 
0182 %busquem el valor que te el popupmenu actualment
0183 nom=get(handles.PCAmodels,'String');
0184 nom=nom{get(handles.PCAmodels,'Value')};
0185 
0186 %busquem aquest nom entre la llista actual
0187 val=find(strcmp(nom,list2));
0188 set(handles.PCAmodels,'String',list2);
0189 
0190 if isempty(val)
0191     set(handles.PCAmodels,'Value',1);
0192 else
0193     set(handles.PCAmodels,'Value',val);
0194 end
0195 
0196 guidata(hObject, handles);
0197 
0198 %----------------------------INUTILS---------------------------------------
0199 function varargout = Menu_Projecta_Dades_PCA_OutputFcn(~, ~, handles) 
0200 varargout{1} = handles.output;
0201 function PCAmodels_Callback(~, ~, ~)
0202 function PCAmodels_CreateFcn(hObject, ~, ~)
0203 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0204     set(hObject,'BackgroundColor','white');
0205 end
0206 function dades_Callback(~, ~, ~)
0207 function dades_CreateFcn(hObject, ~, ~)
0208 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0209     set(hObject,'BackgroundColor','white');
0210 end
0211 function edit1_Callback(~, ~, ~)
0212 function edit1_CreateFcn(hObject, ~, ~)
0213 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0214     set(hObject,'BackgroundColor','white');
0215 end

Generated on Wed 12-Sep-2012 13:03:54 by m2html © 2005