function varargout = Automaticke_vyhodnocovani_spektra_slunecniho_zareni(varargin)
% Automaticke_vyhodnocovani_spektra_slunecniho_zareni MATLAB code for Automaticke_vyhodnocovani_spektra_slunecniho_zareni.fig
%      Automaticke_vyhodnocovani_spektra_slunecniho_zareni, by itself, creates a new Automaticke_vyhodnocovani_spektra_slunecniho_zareni or raises the existing
%      singleton*.
%
%      H = Automaticke_vyhodnocovani_spektra_slunecniho_zareni returns the handle to a new Automaticke_vyhodnocovani_spektra_slunecniho_zareni or the handle to
%      the existing singleton*.
%
%      Automaticke_vyhodnocovani_spektra_slunecniho_zareni('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in Automaticke_vyhodnocovani_spektra_slunecniho_zareni.M with the given input arguments.
%
%      Automaticke_vyhodnocovani_spektra_slunecniho_zareni('Property','Value',...) creates a new Automaticke_vyhodnocovani_spektra_slunecniho_zareni or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before Automaticke_vyhodnocovani_spektra_slunecniho_zareni_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to Automaticke_vyhodnocovani_spektra_slunecniho_zareni_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Automaticke_vyhodnocovani_spektra_slunecniho_zareni

% Last Modified by GUIDE v2.5 13-May-2015 01:38:34

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Automaticke_vyhodnocovani_spektra_slunecniho_zareni_OpeningFcn, ...
                   'gui_OutputFcn',  @Automaticke_vyhodnocovani_spektra_slunecniho_zareni_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


% --- Executes just before Automaticke_vyhodnocovani_spektra_slunecniho_zareni is made visible.
function Automaticke_vyhodnocovani_spektra_slunecniho_zareni_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Automaticke_vyhodnocovani_spektra_slunecniho_zareni (see VARARGIN)

% Choose default command line output for Automaticke_vyhodnocovani_spektra_slunecniho_zareni
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes Automaticke_vyhodnocovani_spektra_slunecniho_zareni wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = Automaticke_vyhodnocovani_spektra_slunecniho_zareni_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


%%%%%%%%%%%%___definice funkce pro tlačíko načtení spektra___%%%%%%%%%%%%%%%

% --- Executes on button press in otevri_button1.
function otevri_button1_Callback(hObject, eventdata, handles)                
% hObject    handle to otevri_button1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
[filename pathname]=uigetfile({'*.txt'},'File Selector');        %  načtení jména a cesty k souboru

% definice globálních proměných
global soubor
global intenzity
global wavelength_number;

soubor=(fullfile(pathname, filename));                                                      
set(handles.filename_text13, 'string',filename)                      %  výpis cesty k souboru do textového pole

%/prava vstupních dat

fid = fopen(soubor);                                                               %  otevření souboru s daty 
out=textscan(fid, '%s   %f');                                                   %  načtení dat ze souboru do proměnné out
fclose(fid);
a=out{1};
intenzity=out{2};                                                                       % uložení dat s hodnotami intenzity
wavelength_string=strrep(a,',','.');                                          % záměna teček za čárky

%převod řetězce na číslo

wavelength_number=zeros(length(wavelength_string), 1);          %  definice nulové matice
for i=1:length(wavelength_string)
    
    wavelength_number(i,1)=str2num(wavelength_string{i,1});     %  Postupně se u všechny prvky v proměné wavelength
                                                                                                            %  převedou na číslo
end


%%%%%%%%%%%%%%%%%%%___odečtení šumu____%%%%%%%%%%%%%%%%%%%%%%

minimum=min(intenzity);
intenzity=intenzity(:,1)-minimum;   

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

% vykreslení měřeného spektra do prvku Axis
plot(wavelength_number,intenzity,'r'),grid on,title('Měřené spektrum'),xlabel('vlnová délka [nm]'),ylabel('relativní intenzita [-]');

% vymazání všech textových polí
set(handles.text1, 'string', '')
set(handles.text2, 'string', '')
set(handles.text3, 'string', '')
set(handles.text4, 'string', '')
set(handles.text5, 'string', '')
set(handles.text6, 'string', '')

set(handles.proc_text_1, 'string', '')
set(handles.proc_text_2, 'string',   '')
set(handles.proc_text_3, 'string',   '')
set(handles.proc_text_4, 'string',   '')
set(handles.proc_text_5, 'string',  '')
set(handles.proc_text_6, 'string',  '')


%%%%%%%%%%_____definice funkce pro tlačítko výpočet_____%%%%%%%%%%%%%%%%%%%

% --- Executes on button press in vypocti_button2.
function vypocti_button2_Callback(hObject, eventdata, handles)
% hObject    handle to vypocti_button2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global classes
global plochy

vypocet()                       %volání funkce pro výpočet, která je uložená v souboru vypocet.m

%  Výpis tříd do textových polí
set(handles.text1, 'string', classes{1})
set(handles.text2, 'string', classes{2})
set(handles.text3, 'string', classes{3})
set(handles.text4, 'string', classes{4})
set(handles.text5, 'string',classes{5})
set(handles.text6, 'string', 'neměřeno')

% Zápis procentuálního zastoupení do textových polí
set(handles.proc_text_1, 'string', num2str(plochy(1,2),'%.2f'))
set(handles.proc_text_2, 'string',  num2str(plochy(2,2),'%.2f'))
set(handles.proc_text_3, 'string',  num2str(plochy(3,2),'%.2f'))
set(handles.proc_text_4, 'string',  num2str(plochy(4,2),'%.2f'))
set(handles.proc_text_5, 'string', num2str(plochy(5,2),'%.2f'))
set(handles.proc_text_6, 'string', 'neměřeno')


%%%%%%%%%%_____definice funkce pro extrapolaci_____%%%%%%%%%%%%%%%%%%%

% --- Executes on button press in aproximace.
function aproximace_Callback(hObject, eventdata, handles)
% hObject    handle to aproximace (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global intenzity
global wavelength_number;

% volání funkce pro extrapolaci, která je uložena v souboru extrapolace.m
extrapolace()

% doplnění grafu o extrapolované data
plot(wavelength_number,intenzity,'r'),grid on,title('Měřené spektrum'),xlabel('vlnová délka [nm]'),ylabel('relativní intenzita [-]');
