function linearniregrese(vstpar)    %hlavni funkce programu 
                                    %je-li volana bez vstupnich parametru zobrazi se GUI
                                    %jinak se parametry predavaji az pri volani callbacks
%globalni promenne
global beta b X zadany y s2 tabt
%volani funkce bez vstupniho parametru
if nargin==0

%--------------kresleni grafickeho objektu Figure a Axes-------------------
Monitor=get(0,'ScreenSize');
figure('Units','Pixels','Name','Lineární regrese',...
    'Position',[0.2*Monitor(3) 0.05*Monitor(4) 0.6*Monitor(3) 0.9*Monitor(4)],'Tag','Figure',...
    'NumberTitle','off','Resize','off','Menubar','none');

%definice tlacitek
uicontrol('Units','Normalized','Style','Push',... 
    'Position',[0.59 0.6 0.15 0.05],'Tag','Konec',...
    'String','KONEC','Callback','linearniregrese Konec');
uicontrol('Units','Normalized','Style','Push',...
    'Position',[0.24 0.6 0.15 0.05],'Tag','Vypocti',...
    'String','Vypoèti model','Callback','linearniregrese Vypocti');
uicontrol('Units','Normalized','Style','Push',...
    'Position',[0.415 0.6 0.15 0.05],'Tag','Kresli',...
    'String','Kresli','Callback','linearniregrese Kresli','Visible','off');

%definice statickych textu
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.2 0.92 0.3 0.06],'Tag','textReg',...
    'BackgroundColor',get(gcf,'Color'),...
    'FontWeight','bold','FontSize',13,...
    'String','Regresní model','Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.15 0.75 0.25 0.06],'Tag','textPocpoz',...
    'BackgroundColor',get(gcf,'Color'),...
    'FontSize',13,...
    'String','Poèet pozorování','Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.55 0.75 0.27 0.06],'Tag','textHlavyz',...
    'BackgroundColor',get(gcf,'Color'),...
    'FontSize',13,...
    'String','Hladina významnosti \alpha','Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.355 0.55 0.27 0.06],'Tag','textStav',...
    'BackgroundColor',get(gcf,'Color'),...
    'FontSize',10,...
    'String','Stavový panel','Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.355 0.4 0.27 0.06],'Tag','textObsluha',...
    'BackgroundColor',get(gcf,'Color'),...
    'FontSize',10,...
    'String','Obsluha programu','Interpreter','tex');
uibutton('Units','Normalized','Style','text',...
    'Position',[0.1 0.85 0.2 0.06],'Tag','text12',...
    'BackgroundColor',get(gcf,'Color'),...
    'String','Y = \beta_1 + \beta_2','FontSize',13,...
    'Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.37 0.85 0.06 0.06],'Tag','text3',...
    'BackgroundColor',get(gcf,'Color'),...
    'String',' + \beta_3','FontSize',13,...
    'Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.53 0.85 0.06 0.06],'Tag','text4',...
    'BackgroundColor',get(gcf,'Color'),...
    'String',' + \beta_4','FontSize',13,...
    'Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.69 0.85 0.06 0.06],'Tag','text5',...
    'BackgroundColor',get(gcf,'Color'),...
    'String',' + \beta_5','FontSize',13,...
    'Interpreter','tex');
uibutton('Units','Normalized','Style','Text',...
    'Position',[0.85 0.855 0.06 0.06],'Tag','eps',...
    'BackgroundColor',get(gcf,'Color'),...
    'String',' + \epsilon','FontSize',13,...
    'Interpreter','tex');

%definice poli pro vypis dat
uicontrol('Units','Normalized','Style','List',...
    'Position',[0 0 1 0.41],'Tag','Obsluha',...
    'FontSize',9,...
    'BackgroundColor','white');
Vypis=str2mat(... %text, ktery se vypise uzivateli po spusteni aplikace
                'REGRESNÍ MODEL',...
                '   vyberte regresní model buï s modifikacemi jedné vysvìtlující promìnné X nebo model s rùznými vysvìtlujícími promìnnými X2 až X5;',...    
                '   vyberte funkce vysvìtlující promìnné u jednotlivých koeficientù regresního modelu;',...
                '   pokud vyberete hodnotu nula, daná vysvìtlující promìnná nebude uvažována',...
                'P0ÈET POZOROVÁNÍ',...
                '   kolik hodnot pozorování máme k dispozici; hodnota od 3 do 100',...
                'HLADINA VÝZNAMNOSTI',...
                '   hladina významnosti 0.01, 0.05 nebo 0.1',...
                'VSTUPNÍ DATA',...
                '   vstupy jsou podle výbìru typu regresního modelu naèteny ze souboru lineárníregrese.xls, který musí být pøi bìhu programu otevøen!',...
                'VYPOÈTI MODEL',...
                '   po ovìøení vstupních dat jsou vypoèteny základní statistiky zadaného regresního modelu a tyto výstupy jsou vypsány taktéž do souboru lineárníregrese.xls',...
                'KRESLI',...
                '   tlaèítko je aktivní v pøípadì, že poèet vysvìtlujících promìnných nepøesahuje 3; poté se kreslí buï 2D nebo 3D graf; pro 2D model se vykreslí jednotlivá pozorování, regresní pøímka a intervaly pro regresní pøímku; pro 3D model se vykreslí pozorování a regresní rovina',...
                'KONEC',...
                '   ukonèí všechna okna programu');
            set(findobj('Tag','Obsluha'),'String',Vypis);
uicontrol('Units','Normalized','Style','List',...
    'Position',[0 0.455 1 0.1],'Tag','List',...
    'FontSize',9,...
    'BackgroundColor','white');

%definice popupmenu a textoveho pole pro vkladani dat
uicontrol('Units','Normalized','Style','popupmenu',...
    'Position',[0.28 0.81 0.09 0.1],'Tag','beta2',...
    'FontSize',11,'String','0|X|X^2|X^3','Value',2);
uicontrol('Units','Normalized','Style','popupmenu',...
    'Position',[0.44 0.81 0.09 0.1],'Tag','beta3',...
    'FontSize',11','String','0|X|X^2|X^3');
uicontrol('Units','Normalized','Style','popupmenu',...
    'Position',[0.6 0.81 0.09 0.1],'Tag','beta4',...
    'FontSize',11,'String','0|X|X^2|X^3');
uicontrol('Units','Normalized','Style','popupmenu',...
    'Position',[0.76 0.81 0.09 0.1],'Tag','beta5',...
    'FontSize',11,'String','0|X|X^2|X^3');
uicontrol('Units','Normalized','Style','edit',...
    'Position',[0.24 0.71 0.07 0.035],'Tag','pocpoz',...
    'FontSize',11);
uicontrol('Units','Normalized','Style','popupmenu',...
    'Position',[0.63 0.645 0.1 0.1],'Tag','hladinavyz',...
    'FontSize',11,'String','0,01|0,05|0,1','Value',2);
uicontrol('Units','Normalized','Style','popupmenu',...
    'Position',[0.45 0.87 0.3 0.1],'Tag','model',...
    'FontSize',11,'String','s jednou vysvìtlující promìnnou|s více promìnnými',...
    'Callback','linearniregrese Priprav');
%--------------------reakce na stisk tlacitek a volby popupmenu---------------------------
else %jestlize je funkce volana se vstupnim parametrem
    switch(vstpar) %prepinac odezvy Callback
     
        case('Konec') %tlacitko konec ukonci vsechny okna programu
            close all
   
        case('Priprav') %odezva na volbu popupmenu jaky regresni model bude pocitan a v souvislosti se nastavi popupmenu pro vysvetlujici promenne   
            model=get(findobj('Tag','model'),'Value');
            if model==2;
                set(findobj('Tag','beta2'),'String','0|X2','Value',2)
                set(findobj('Tag','beta3'),'String','0|X3','Value',1)
                set(findobj('Tag','beta4'),'String','0|X4','Value',1)
                set(findobj('Tag','beta5'),'String','0|X5','Value',1)

            else
                set(findobj('Tag','beta2'),'String','0|X|X^2|X^3','Value',2)
                set(findobj('Tag','beta3'),'String','0|X|X^2|X^3','Value',1)
                set(findobj('Tag','beta4'),'String','0|X|X^2|X^3','Value',1)
                set(findobj('Tag','beta5'),'String','0|X|X^2|X^3','Value',1)
            end
            
        case('Vypocti')
            pocpoz=str2num(get(findobj('Tag','pocpoz'),'String')); %prevedeni retezce pocet pozorovani na cislo a nasledne osetreni funkci osetri
            osetri(pocpoz);
            hladinavyz=(get(findobj('Tag','hladinavyz'),'Value')); %nacteni volby popupmenu pro hladinu vyznamnosti a podle prirazeni spravne hodnoty 
            if hladinavyz==1
               alfa = 0.01;
            elseif hladinavyz==2
               alfa = 0.05;
            elseif hladinavyz==3
               alfa = 0.1;
            end
            beta=(get(findobj('Tag','beta2'),'Value'));            %nacteni vektoru hodnot popupmenu vybranych promennych modelu
            beta(end+1)=(get(findobj('Tag','beta3'),'Value'));
            beta(end+1)=(get(findobj('Tag','beta4'),'Value'));
            beta(end+1)=(get(findobj('Tag','beta5'),'Value'));
            
            if beta==ones                                          %osetreni jestli je vubec zvolena nejaka vysvetlujici promenna
                   Vypis=str2mat(... 
                    'Regresní model je nesprávnì zadán!');
                     set(findobj('Tag','List'),'String',Vypis); 
                     error('Regresní model je nesprávnì zadán!'); 
            end
            st=0;                                                  %zjisteni stupnu volnosti take pro pozdejsi vyuziti,jestli nebudou nejake sloupce matice X linearne zavisle
            for i=1:length(beta)
               if beta(i)~=1
                   st=st+1;
               end
            end
            if st>=pocpoz                                          %osetreni aby platilo ze k>n 
                   Vypis=str2mat(... 
                    'Poèet pozorování musí být vìtší než poèet koeficientù(nepoèítá se úrovòová konstanta)!');
                     set(findobj('Tag','List'),'String',Vypis); 
                     error('Poèet pozorování musí být vìtší než poèet koeficientù(nepoèítá se úrovòová konstanta)!');                
            end

            model=get(findobj('Tag','model'),'Value'); %nacteni typu zvoleneho modelu a podle toho se vola prislusna funkce s predanymi se parametry
            if model==1
            [spojeni,X,zadany,y]=jednapromenna(pocpoz,beta);
            else
            [spojeni,X,y]=vicepromennych(pocpoz,beta);    
            end
            
            [b,bint,r,rint,stats] = regress(y,X,alfa); %implementovana funkce regress pro vypocet regrese; vraci vektor neznamych koeficientu, jejich 100(1-alfa) procentni intervaly spolehlivosti, vektor rezidui spolecne s jejich intervaly a nakonec vektor zakladnich statistickych parametru 
            s2=stats(4);                               %odhad rozptylu rezidui
            C=s2*inv(X'*X);                            %kovariancni matice
            a=size(C);
            for i=1:a(1)                               %vypocet standarnich chyb z kovariancni matice
                if i==1
                    odmspom=sqrt(C(i,i));
                else
                    odmspom(end+1)=sqrt(C(i,i));
                end
            end
            odms=odmspom';   
            for i=1:length(b)                          %urcovani vyznamnosti koeficientu (zda interval spolehlivost obsahula nulu)
                if  bint(i,1)<=0 && bint(i,2)>=0
                    if i==1
                       vyznb=0;
                    else
                        vyznb(end+1)=0;
                    end
                else
                    if i==1
                     vyznb=1;   
                    else
                    vyznb(end+1)=1;
                    end
                end
            end
            vyznamnostb=vyznb';
            
            X(:,1)=[];                                 %osetreni matice X (vypusteni 1.sloupce jednicek) pro dalsi funkci regstats, ze ktere nas zajimaji pouze struktury whichstats
            whichstats = {'yhat','tstat','fstat','rsquare','adjrsquare'};
            stats = regstats(y,X,'linear',whichstats);
            tstat = stats.tstat;
            fstat = stats.fstat;
            rozmer=size(X);
            tabf=finv(1-alfa,rozmer(2)+1-1,rozmer(1)-(rozmer(2)+1)); %urceni tabulkove hodnoty Fisherova rozdeleni
            if fstat.f>tabf                                          %vyznamnost koef.vicenas.determinace
                vyznf=1;
            else
                vyznf=0;
            end
            tabt=tinv(1-alfa/2,rozmer(1)-(rozmer(2)+1));             %urceni tabulkove hodnoty studentova rozdeleni
                                                                     %priprava pro export dat do excelu (vyprazdeni bunek pro zapis)
            ddepoke(spojeni, 'r2c8', '');
            ddepoke(spojeni, 'r4c1:r8c1', '');
            ddepoke(spojeni, 'r4c5:r8c5', '');
            ddepoke(spojeni, 'r4c6:r8c6', '');
            ddepoke(spojeni, 'r4c9:r8c9', '');
            ddepoke(spojeni, 'r4c11:r8c11', '');
            ddepoke(spojeni, 'r13c5', '');
            ddepoke(spojeni, 'r10c5', '');
            ddepoke(spojeni, 'r11c5', '');
            ddepoke(spojeni, 'r12c5', '');
            ddepoke(spojeni, 'r11c11:r15c15', '');
            ddepoke(spojeni, 'r4c14:r8c14', '');
            ddepoke(spojeni, 'r15c5', '');
            ddepoke(spojeni, 'r14c5', '');
            ddepoke(spojeni, 'r17c1', '');
            ddepoke(spojeni, 'r17c4', '');
            ddepoke(spojeni, 'r11c9:r110c9', '');
            ddepoke(spojeni, 'r11c7:r110c7', '');
            ddepoke(spojeni, 'r22c2', '');
            ddepoke(spojeni, 'r22c1', '');
                                                                    %export dat
            zapisalfa = ddepoke(spojeni, 'r2c8', alfa);
            zapisb = ddepoke(spojeni, 'r4c1:r8c1', b);
            zapisbintd = ddepoke(spojeni, 'r4c5:r8c5', bint(:,1));
            zapisbinth = ddepoke(spojeni, 'r4c6:r8c6', bint(:,2));
            zapisodms = ddepoke(spojeni, 'r4c9:r8c9', odms);
            zapist = ddepoke(spojeni, 'r4c11:r8c11', tstat.t);
            zapissv = ddepoke(spojeni, 'r13c5', tstat.dfe);
            zapisrsc = ddepoke(spojeni, 'r10c5', fstat.sse);
            zapistsc = ddepoke(spojeni, 'r11c5', fstat.ssr);
            zapiss2 = ddepoke(spojeni, 'r12c5', s2);
            zapisC = ddepoke(spojeni, 'r11c11:r15c15', C);
            zapisvyznb = ddepoke(spojeni, 'r4c14:r8c14', vyznamnostb);
            zapisr = ddepoke(spojeni, 'r15c5', stats.rsquare);
            zapisadjr = ddepoke(spojeni, 'r14c5', stats.adjrsquare);
            zapisf = ddepoke(spojeni, 'r17c1', fstat.f);
            zapisvyznf = ddepoke(spojeni, 'r17c4', vyznf);
            zapisrez = ddepoke(spojeni, 'r11c9:r110c9', r);
            zapisvyrovy = ddepoke(spojeni, 'r11c7:r110c7', stats.yhat);
            zapisfstat = ddepoke(spojeni, 'r22c2', tabf);
            zapiststat = ddepoke(spojeni, 'r22c1', tabt);
                                                                    %kontrola zda vsechny zapisy probehly uspesne a osetreni linearne nezavislych sloupcu matice X
            if zapisalfa==zapisb==zapisbintd==zapisbinth==zapisodms==zapist==zapissv==zapisrsc==zapistsc==zapiss2==zapisC==zapisvyznb==zapisr==zapisadjr==zapisf==zapisvyznf==zapisrez==zapisvyrovy==zapisfstat==zapiststat==1
                if rank(X)==st
                           Vypis=str2mat(... 
                        'Výpis výsledkù regresního modelu do souboru linearníregrese.xls dopadl úspìšnì!');
                        set(findobj('Tag','List'),'String',Vypis);
                else
                           Vypis=str2mat(... 
                        'Výpis výsledkù regresního modelu do souboru linearníregrese.xls dopadl úspìšnì, ale výsledky i proložený polynom bude zkreslený,',...
                        'protože matice X nemá plnou hodnost!');
                        set(findobj('Tag','List'),'String',Vypis); 
                end
            else
                           Vypis=str2mat(... 
                        'Výpis výsledkù regresního modelu do souboru linearníregrese.xls se nezdaøil!');
                        set(findobj('Tag','List'),'String',Vypis); 
                        error('Výpis výsledkù regresního modelu do souboru linearníregrese.xls se nezdaøil!'); 
            end
                                                                    %jakmile je pocet vysvetlujicich i vysvetlovanych promennych <=3 je mozne kreslit graf a zobrazi se tedy tlacitko Kresli
            if  get(findobj('Tag','model'),'Value')==1 || (rozmer(2)+1)<=3
                set(findobj('Tag','Kresli'),'Visible','on');
            else
                set(findobj('Tag','Kresli'),'Visible','off')
            end
            
        case('Kresli')
            rozmer=size(X);
            for i=1:(rozmer(2))
             if X(:,i)==zeros
                          Vypis=str2mat(... 
                        'Pozorování nemohou být všechny nulové!');
                        set(findobj('Tag','List'),'String',Vypis); 
                        error('Pozorování nemohou být všechny nulové!'); 
             end
            end
            if rozmer(2)+1==2 || get(findobj('Tag','model'),'Value')==1     %na zaklade poctu sloupcu matice X a jestli je vybrana volba regresniho modelu s jednou promennou se rozhodne zda se bude kreslit 2D (prolozeni polynomem) nebo 3D graf
                h=get(0,'children');                                %podle handlu jednotlivych figure se zajisti, aby se kreslilo do noveho okna a neprekreslilo se stavajici, existuje-li
                if length(h)>1
                    for i=2:length(h)
                    close(i);
                    end
                end
                figure(2);
                
              if rozmer(2)+1>2                                      %v pripade teto podminky se musi jednat o graf pro jednu vysvetlujici promennou, kdy se bude prokladat polynomem
                scatter(zadany,y,'filled');                         %vzkresleni bodu, ktere uchovana globalni promenna zadany, protoze nemusi byt nutne soucasti zadani 
                hold on
                grid on
                x=min(zadany):.01:max(zadany);                       %vytvoreni vektoru pro pozdejsi kresleni
                                                                    %priprava vektoru koeficientu a naplneni promenne YFIT pro spravne vykresleni regresni roviny podle zadaneho modelu
                index=0;                                            %cyklus pro serazeni koeficientu, aby byli spravne serazeni pro funkci polyval
                p=zeros(length(beta),1);
                p(end)=b(1);
                b(1,:)=[];
                for i=1:length(beta)                                %vyuziti symbolicke promenne pro vytvoreni funkce regresni primky podle zadaneho modelu
                    if beta(i)~=1
                    switch(beta(i))
                        case(2)
                            if p(3)==0
                            p(3)=b(i-index);
                            else
                            p(3)=p(3)+b(i-index);
                            end
                        case(3)
                            if p(2)==0
                            p(2)=b(i-index);
                            else
                            p(2)=p(2)+b(i-index);
                            end
                        case(4)
                            if p(1)==0
                            p(1)=b(i-index);
                            else
                            p(1)=p(1)+b(i-index);
                            end
                    end
                     index=index-1;
                    end
                  index=index+1;
                end
                YFIT = polyval(p,x);                                %funkce polyval pro prolozeni polynome prislusneho stupne(x^3 x^2 x konst.)                               
                h=plot(x,YFIT);                                     %vykresleni regresni krivky, nastanevi cary, popisu os a jejich prizpusobeni
                set(h,'LineWidth',2,'Color','k');
                xlabel('x');
                ylabel('y');
                axis([min(zadany)-1 max(zadany)+1 min(y)-1 max(y)+1]);
                
                set(findobj('Tag','Kresli'),'Visible','off');       %deaktivace tlacitka Kresli
              else
                scatter(X,y,'filled');                              %zobrazeni jednotlivych bodu pozorovani
                hold on
                
                xmin=min(X);                                        %zjisteni min. a max. hodnot pozorovani vysvetlujicich promennych
                xmax=max(X);
                syms x real                                         %vytvoreni symbolicke promenne
                
                for i=1:length(beta)                                %vyuziti symbolicke promenne pro vytvoreni funkce regresni primky podle zadaneho modelu
                    if beta(i)~=1
                    switch(beta(i))
                        case(2)
                            fx=b(1)+b(2)*x;
                            z=1;
                        case(3)
                            fx=b(1)+b(2)*x.^2;
                            z=2;
                        case(4)
                            fx=b(1)+b(2)*x.^3;
                            z=3;
                    end
                    end
                end
                collect(fx);
             
                h=ezplot(fx,[xmin-1 xmax+1]);                                     
                
                set(h,'LineWidth',2,'Color','k');                   %vykresleni regresni primky tucnejsi carou a cernou barvou
                grid on
                hold on
                
                X=[ones(length(X),1) X];                            %opetne pridani prvniho sloupce jednicek do matice X; nutné pro dalsi vypocty
                if z==1                                             %urceni vektoru x pro vypocet intervalu spolehlivosti reg. primky podle posledniho cyklu for
                   v = [1 x];
                elseif z==2
                   v = [1 x^2];
                else
                   v = [1 x^3];
                end
                pomvyp=v*inv(X'*X)*v';                              %postupny vypocet obou intervalu spolehlivosti regresni primky a jejich vykresleni cervene
                collect(pomvyp);
                horni=fx+tabt*sqrt(s2)*sqrt(pomvyp);
                collect(horni);
                dolni=fx-tabt*sqrt(s2)*sqrt(pomvyp);
                collect(dolni);
                
                h1=ezplot(horni,[xmin-1 xmax+1]);
                set(h1,'Color','r');
                hold on
                
                h2=ezplot(dolni,[xmin-1 xmax+1]);
                set(h2,'Color','r');
                title('');
                xlabel('x');
                ylabel('y');
                
                set(findobj('Tag','Kresli'),'Visible','off');       %deaktivace tlacitka Kresli
              end
            else                                                    %bude se kreslit 3D graf
                h=get(0,'children');                                %opet zajisteni, aby se kreslilo do spravneho okna
                if length(h)>1
                    for i=2:length(h)
                    close(i);
                    end
                end
                figure(2);
                grid on
                 
                scatter3(X(:,1),X(:,2),y,'filled');                 %body pozorovani
                 
                hold on
                xfit = min(X(:,1)):.1:max(X(:,1));                  %rozsekani intervalu od min. do max. hodnot pozorovani vysvetlujicich promennych
                yfit = min(X(:,2)):.1:max(X(:,2));
                syms x real                                         %deklarace symbolickych promennych
                syms y real
                [x,y] = meshgrid(xfit,yfit);                        %tvorba mrizky ze ziskanych intervalu
                prvni=b(1);                                         %priprava vektoru koeficientu a naplneni promenne YFIT pro spravne vykresleni regresni roviny podle zadaneho modelu
                b(1,:)=[];
                index=0;
                YFIT=0;
                for i=1:length(beta)
                  if beta(i)~=1
                    switch(beta(i))
                        case(2)
                            if YFIT==0
                            YFIT=YFIT+b(i-index)*x;
                            else
                            YFIT=YFIT+b(i-index)*y;    
                            end
                        case(3)
                            if YFIT==0
                            YFIT=YFIT+b(i-index)*x.^2;
                            else
                            YFIT=YFIT+b(i-index)*y.^2;    
                            end
                        case(4)
                            if YFIT==0
                            YFIT=YFIT+b(i-index)*x.^3;
                            else
                            YFIT=YFIT+b(i-index)*y.^3;    
                            end
                    end
                    index=index-1;
                  end
                  index=index+1;
                end
                YFIT=YFIT+prvni;

                mesh(x,y,YFIT)                                      %vykresleni regresni roviny, opatreni nazvu grafu, stanoveni uhlu pohledu a popis os
                title('Graf pro dvì nezávisle a jednu závisle promìnnou'); 
                view(50,10)
                xlabel('x1');
                ylabel('x2');
                zlabel('y');
 
                set(findobj('Tag','Kresli'),'Visible','off');       %deaktivace tlacitka Kresli
            end         
    end
end        
            

  

                                           
                                                            
                 
                