function varargout = Ui(varargin)

% UI Application M-file for Ui.fig
%    FIG = UI launch Ui GUI.
%    UI('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 06-Feb-2003 15:07:18

if nargin == 0  % LAUNCH GUI

	fig = openfig(mfilename,'reuse');

	% Use system color scheme for figure:
	set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));

	% Generate a structure of handles to pass to callbacks, and store it. 
	handles = guihandles(fig);
	guidata(fig, handles);

	if nargout > 0
		varargout{1} = fig;
	end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

	try
		if (nargout)
			[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
		else
			feval(varargin{:}); % FEVAL switchyard
		end
	catch
		disp(lasterr);
	end

end


%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and 
%| sets objects' callback properties to call them through the FEVAL 
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the 
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback.  You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks.  Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.



% --------------------------------------------------------------------
function varargout = FileButton_Callback(h, eventdata, handles, varargin)
[file, path] = uigetfile('*.txt','Valitse avattava tiedosto');
set(handles.FileName,'String', [path, file] );


% --------------------------------------------------------------------
function varargout = StartButton_Callback(h, eventdata, handles, varargin)
data = dlmread(get(handles.FileName,'String'), ' ');
[centres, classes] = kmeans(str2num(get(handles.edit2, 'String')), data);
axes(handles.axes1);
[components] = PCA(data);
proj_data = data*components
proj_centres = centres*components
hold off
plot3(proj_centres(:,1), proj_centres(:,2), proj_centres(:,3), 'ks')
grid on
hold on
plot3(proj_data(:,1), proj_data(:,2), proj_data(:,3), 'b*')

axes(handles.axes2);
[classes2, centres2, dist] = dcKmeans_2(data, str2num(get(handles.edit2, 'String')));
[distance_between_kmeans]=distance(centres, centres2)
proj_centres2 = centres2*components
[distance_between_projected_points]=distance(proj_centres, proj_centres2)
hold off
plot3(proj_centres2(:,1), proj_centres2(:,2), proj_centres2(:,3), 'ks')
grid on 
hold on
plot3(proj_data(:,1), proj_data(:,2), proj_data(:,3), 'b*')

clear all

% --------------------------------------------------------------------
function varargout = edit1_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = edit2_Callback(h, eventdata, handles, varargin)

