function ambisonics(vstpar)

global W X Y Z fvz player;

if nargin==0
    
%     GRAFICKE UZIVATELSKE ROZHRANI APLIKACE B-FORMAT DEKODER

% vytvareni ovladacich prvku
% hlavni okno    
    F=figure('Units','Pixels','Name','B-format Dekoder','Position',...
        [0.002*1024 0.045*768 0.9972*1024 0.86*768],'Tag','Figure',...
        'Color',[0.2 0.3 0.5],'NumberTitle','off','Resize','on','MenuBar','none',...
        'ToolBar','figure','DeleteFcn','ambisonics konec');
%     indikator=uicontrol('Parent',F,'Units','Normalized','Style','Text','Position',...
%         [0.44 0.966 0.11 0.03],'Tag','indikator','String','','ForegroundColor',...
%         'white','FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
%         get(F,'Color'));
    
% menu    
    M=uimenu('Label','Soubor');
        uimenu(M,'Label','Načíst zdrojový soubor MAT','Callback','ambisonics zdrojMat')
        uimenu(M,'Label','Načíst zdrojové soubory WAV','Callback','ambisonics zdrojWav')
        uimenu(M,'Label','Uložit cílový soubor MAT','Callback','ambisonics cilMat',...
                'separator','on')
        uimenu(M,'Label','Uložit cílové soubory WAV','Callback','ambisonics cilWav')
        uimenu(M,'Label','Konec','Callback','ambisonics konec',...
                'separator','on')
    O=uimenu('Label','Obrázek','Tag','Omenu');
        uimenu(O,'Label','Mono','Tag','mono','Callback','ambisonics obrazek')
        uimenu(O,'Label','Stereo','Tag','stereo','Callback','ambisonics obrazek')
        uimenu(O,'Label','Rectangular','Tag','rectangular','Callback','ambisonics obrazek')
        uimenu(O,'Label','Rectangular 3D','Tag','rectangular3D','Callback','ambisonics obrazek')
        uimenu(O,'Label','5.1 Surround Sound ITU-R BS.775','Tag','ITU 5.1','Callback','ambisonics obrazek')
        uimenu(O,'Label','Birectangle','Tag','birectangle','Callback','ambisonics obrazek')
        uimenu(O,'Label','Octahedron','Tag','octahedron','Callback','ambisonics obrazek')
        uimenu(O,'Label','Tetrahedron','Tag','tetrahedron','Callback','ambisonics obrazek')
        uimenu(O,'Label','Pravidelný Polygon','Tag','pravidelny polygon','Callback','ambisonics obrazek')
        uimenu(O,'Label','Pravidelný Polygon 3D','Tag','pravidelny polygon3D','Callback','ambisonics obrazek')
    F=uimenu('Label','Shelving Filtry'); 
        uimenu(F,'Label','Nastavení parametrů','Tag','filtry','Callback','ambisonics filtry')
    Z=uimenu('Label','Zobrazení','Tag','Zmenu');   
        uimenu(Z,'Label','Přepnout vstupní/výstupní signály','Tag','in/out','Callback','ambisonics prepni')
        uimenu(Z,'Label','Zobrazit v novém okně','Callback','ambisonics zobraz')
        uimenu(Z,'Label','Časový průběh','Tag','casGraf','Callback','ambisonics vyberG','separator','on','Checked','on','Enable','on')
        uimenu(Z,'Label','Spektrogram','Tag','speGraf','Callback','ambisonics vyberG','Enable','on')
        uimenu(Z,'Label','Závislost intenzity na azimutu','Tag','intGrafA','Callback','ambisonics vyberG','Enable','off')
        uimenu(Z,'Label','2D závislost intenzity na azimutu a elevaci','Tag','intGraf2','Callback','ambisonics vyberG','Enable','off')
        uimenu(Z,'Label','3D závislost intenzity na azimutu a elevaci','Tag','intGraf3','Callback','ambisonics vyberG','Enable','off')
            
% panel vstupních signálů            
    inPanel=uipanel('Tag','inPanel',...         'Title','Průběhy vstupních signálů',
        'Position',[0.01 0.006 0.98 0.885],'BackgroundColor',[0.7 0.8 0.5]);%[0.576 0.765 0.173] [0.518 0.69 0.137]
    inNazev=uicontrol('Parent',inPanel,'Style','Text','Units','Normalized','FontName','Microsoft Sans Serif','Position',...
        [0.005 0.96 0.25 0.0356],'Tag','inNazev','String','Průběhy vstupních signálů','HorizontalAlignment','left',...
        'BackgroundColor',get(findobj('Tag','inPanel'),'BackgroundColor'),'Fontsize',13,'FontWeight','bold');
    inStop=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
        [0.937 0.955 0.06 0.036],'Tag','inStop','String','STOP',...
        'Callback','ambisonics stop','ForegroundColor','black','BackgroundColor',...
        [0.5 0.6 1],'FontWeight','bold','Fontsize',12);
    inInfo=uicontrol('Parent',inPanel,'Style','text','Units','Normalized','Position',...
        [0.785 0.955 0.12 0.033],'Tag','inInfo','String','','ForegroundColor','white',...
        'BackgroundColor',get(findobj('Tag','inPanel'),'BackgroundColor'),'FontWeight','bold','Fontsize',11);
    inPause=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
        [0.91 0.955 0.025 0.036],'Tag','inPause','String','ll','UserData',0,...
        'Callback','ambisonics pause','ForegroundColor','black','BackgroundColor',...
        [0.5 0.6 1],'FontWeight','bold','Fontsize',15);
    nadpisW=uicontrol('Parent',inPanel,'Units','Normalized','Style','Text','Position',...
        [0.09 0.79 0.32 0.03],'Tag','nadpisW','String','Složka W','ForegroundColor',...
        'black','FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
        get(findobj('Tag','inPanel'),'BackgroundColor'));
    zdrojW=axes('Parent',inPanel,'Units','Normalized','Position',[0.05 0.49 0.4 0.3],...
        'Tag','zdrojW');
    playW=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
        [0.46 0.565 0.035 0.15],'Tag','playW','String','I>',...
        'Callback','ambisonics playIN','ForegroundColor','black','BackgroundColor',...
        [0.702 0.78 1],'FontWeight','bold','Fontsize',20);
    nadpisX=uicontrol('Parent',inPanel,'Units','Normalized','Style','Text','Position',...
        [0.58 0.79 0.32 0.03],'Tag','nadpisX','String','Složka X','ForegroundColor',...
        'black','FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
        get(findobj('Tag','inPanel'),'BackgroundColor'));
    zdrojX=axes('Parent',inPanel,'Units','Normalized','Position',[0.549 0.49 0.4 0.3],...
        'Tag','zdrojX');
    playX=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
        [0.959 0.565 0.035 0.15],'Tag','playX','String','I>',...
        'Callback','ambisonics playIN','ForegroundColor','black','BackgroundColor',...
        [0.702 0.78 1],'FontWeight','bold','Fontsize',20);
    nadpisY=uicontrol('Parent',inPanel,'Units','Normalized','Style','Text','Position',...
        [0.09 0.38 0.32 0.03],'Tag','nadpisY','String','Složka Y','ForegroundColor',...
        'black','FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
        get(findobj('Tag','inPanel'),'BackgroundColor'));
    zdrojY=axes('Parent',inPanel,'Units','Normalized','Position',[0.05 0.08 0.4 0.3],...
        'Tag','zdrojY');
    playY=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
        [0.46 0.155 0.035 0.15],'Tag','playY','String','I>',...
        'Callback','ambisonics playIN','ForegroundColor','black','BackgroundColor',...
        [0.702 0.78 1],'FontWeight','bold','Fontsize',20);
    nadpisZ=uicontrol('Parent',inPanel,'Units','Normalized','Style','Text','Position',...
        [0.58 0.38 0.32 0.03],'Tag','nadpisZ','String','Složka Z','ForegroundColor',...
        'black','FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
        get(findobj('Tag','inPanel'),'BackgroundColor'));
    zdrojZ=axes('Parent',inPanel,'Units','Normalized','Position',[0.549 0.08 0.4 0.3],...
        'Tag','zdrojZ');
    playZ=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
        [0.959 0.155 0.035 0.15],'Tag','playZ','String','I>',...
        'Callback','ambisonics playIN','ForegroundColor','black','BackgroundColor',...
        [0.702 0.78 1],'FontWeight','bold','Fontsize',20);
%     prepinacOUT=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
%         [0.782 0.96 0.215 0.05],'Tag','prepinacOUT','String','Přepnout Vstupy/Výstupy',...
%         'Callback','ambisonics prepni','ForegroundColor','white','BackgroundColor',...
%         [0.5 0.5 0.5],'FontWeight','bold','Fontsize',13,'ToolTipString',...
%         'Stiskni pro vykreslení grafů výstupních signálů');
%     oddelitIN=uicontrol('Parent',inPanel,'Style','Push','Units','Normalized','Position',...
%         [0.045 0.96 0.15 0.038],'Tag','oddelitIN','String','Zobraz v novém okně',...
%         'Callback','ambisonics zobraz','ForegroundColor','white','BackgroundColor',...
%         [0.3 0.4 0.6],'FontWeight','bold','Fontsize',10,'ToolTipString',...
%         'Stiskni pro zobrazení grafů vstupních signálů v novém okně pro tisk');
%     vyberGrafuIN=uibuttongroup('Parent',inPanel,'Position',[0.35 0.96 0.27 0.05],'SelectionChangeFcn',...
%         'ambisonics zobrazIN','Tag','vyberGrafuIN','TitlePosition','centertop',...
%         'FontWeight','bold','FontSize',11,'BackgroundColor',get(findobj('Tag','inPanel'),'BackgroundColor'));
%     casGrafIN=uicontrol('Parent',vyberGrafuIN,'Units','Normalized','Style','Radio','Position',...
%         [0.05 0.1 0.5 0.9],'Tag','casGrafIN','String','Časový průběh',...
%         'ForegroundColor','black','BackgroundColor',...
%         get(findobj('Tag','inPanel'),'BackgroundColor'),'FontSize',11);
%     speGrafIN=uicontrol('Parent',vyberGrafuIN,'Units','Normalized','Style','Radio','Position',...
%         [0.56 0.1 0.4 0.9],'Tag','speGrafIN','String','Spektrogram',...
%         'ForegroundColor','black','BackgroundColor',...
%         get(findobj('Tag','inPanel'),'BackgroundColor'),'FontSize',11);
    
% panel výstupních signálů    
    outPanel=uipanel('Tag','outPanel',...       'Title','Průběhy výstupních signálů',
        'Position',[0.01 0.006 0.98 0.885],'BackgroundColor',[0.7 0.8 0.7],'Visible','off');
    outNazev=uicontrol('Parent',outPanel,'Style','Text','Units','Normalized','FontName','Microsoft Sans Serif','Position',...
        [0.005 0.96 0.25 0.0356],'Tag','outNazev','String','Průběhy výstupních signálů','HorizontalAlignment','left',...
        'BackgroundColor',get(findobj('Tag','outPanel'),'BackgroundColor'),'Fontsize',13,'FontWeight','bold');
    outStop=uicontrol('Parent',outPanel,'Style','Push','Units','Normalized','Position',...
        [0.937 0.955 0.06 0.036],'Tag','outStop','String','STOP',...
        'Callback','ambisonics stop','ForegroundColor','black','BackgroundColor',...
        [0.5 0.6 1],'FontWeight','bold','Fontsize',12);
    outInfo=uicontrol('Parent',outPanel,'Style','text','Units','Normalized','Position',...
        [0.785 0.955 0.12 0.033],'Tag','outInfo','String','','ForegroundColor','white',...
        'BackgroundColor',get(findobj('Tag','outPanel'),'BackgroundColor'),'FontWeight','bold','Fontsize',11);
    outPause=uicontrol('Parent',outPanel,'Style','Push','Units','Normalized','Position',...
        [0.91 0.955 0.025 0.036],'Tag','outPause','String','ll',...
        'Callback','ambisonics pause','ForegroundColor','black','BackgroundColor',...
        [0.5 0.6 1],'FontWeight','bold','Fontsize',15);
    outPole=uicontrol('Parent',outPanel,'Style','text','Units','Normalized','Position',...
        [0.35 0.955 0.25 0.033],'Tag','outPole','String','','ForegroundColor','black','FontName','Rockwell',...
        'BackgroundColor',get(findobj('Tag','outPanel'),'BackgroundColor'),'FontWeight','bold','Fontsize',11);
%     prepinacIN=uicontrol('Parent',outPanel,'Style','Push','Units','Normalized','Position',...
%         [0.782 0.96 0.215 0.05],'Tag','prepinacIN','String','Přepnout Výstupy/Vstupy',...
%         'Callback','ambisonics prepni','ForegroundColor','white','BackgroundColor',...
%         [0.5 0.5 0.5],'FontWeight','bold','Fontsize',13,'ToolTipString',...
%         'Stiskni pro vykreslení grafů vstupních signálů W,X,Y,Z');
%     prekreslit=uicontrol('Parent',outPanel,'Style','Push','Units','Normalized','Position',...
%         [0.01 0.95 0.1 0.045],'Tag','prekreslit','String','Překreslit',...
%         'Callback','ambisonics vystup','ForegroundColor','white','BackgroundColor',...
%         [0.3 0.4 0.6],'FontWeight','bold','Fontsize',12,'ToolTipString',...
%         'Stiskni pro zobrazení výstupních signálů');
%     oddelit=uicontrol('Parent',outPanel,'Style','Push','Units','Normalized','Position',...
%         [0.045 0.96 0.15 0.038],'Tag','oddelit','String','Zobraz v novém okně',...
%         'Callback','ambisonics zobraz','ForegroundColor','white','BackgroundColor',...
%         [0.3 0.4 0.6],'FontWeight','bold','Fontsize',10,'ToolTipString',...
%         'Stiskni pro zobrazení grafů výstupních signálů v novém okně pro tisk');
%     vyberGrafu=uibuttongroup('Parent',outPanel,'Position',[0.32 0.96 0.38 0.05],'SelectionChangeFcn',...
%         'ambisonics vystup','Tag','vyberGrafu','TitlePosition','centertop',...
%         'FontWeight','bold','FontSize',11,'BackgroundColor',get(findobj('Tag','outPanel'),'BackgroundColor'));
%     casGraf=uicontrol('Parent',vyberGrafu,'Units','Normalized','Style','Radio','Position',...
%         [0.02 0.1 0.34 0.9],'Tag','casGraf','String','Časový průběh',...
%         'ForegroundColor','black','BackgroundColor',...
%         get(findobj('Tag','outPanel'),'BackgroundColor'),'FontSize',11);
%     speGraf=uicontrol('Parent',vyberGrafu,'Units','Normalized','Style','Radio','Position',...
%         [0.35 0.1 0.3 0.9],'Tag','speGraf','String','Spektrogram',...
%         'ForegroundColor','black','BackgroundColor',...
%         get(findobj('Tag','outPanel'),'BackgroundColor'),'FontSize',11);
%     intGraf=uicontrol('Parent',vyberGrafu,'Units','Normalized','Style','Radio','Position',...
%         [0.65 0.1 0.35 0.9],'Tag','intGraf','String','Závislost na a,e',...
%         'ForegroundColor','black','BackgroundColor',...
%         get(findobj('Tag','outPanel'),'BackgroundColor'),'FontSize',11);
    
% panel konfigurace cílového pole    
    konfigPanel=uipanel('Tag','konfigPanel',...     'Title','Cílová konfigurace reproduktorového pole',
        'Position',[0.01 0.885 0.98 0.11],'BackgroundColor',[0.65 0.75 0.85]);
    konfigNazev=uicontrol('Parent',konfigPanel,'Style','Text','Units','Normalized','FontName','Microsoft Sans Serif','Position',...
        [0.005 0.56 0.25 0.42],'Tag','konfigNazev','String','Cílová konfigurace pole','HorizontalAlignment','left',...
        'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'),'Fontsize',13,'FontWeight','bold');
    vypocet=uicontrol('Parent',konfigPanel,'Style','Push','Units','Normalized','Position',...
        [0.892 0.17 0.099 0.66],'Tag','vypocet','String','Výpočet',...
        'Callback','ambisonics vypocet','ForegroundColor','white','BackgroundColor',...
        [1 0.396 0.243],'FontWeight','bold','Fontsize',12);
    druh=uicontrol('Parent',konfigPanel,'Style','Popup','Units','Normalized','Position',...
        [0.04 0.5 0.2 0.05],'Tag','druh','String',...
        'Mono|Stereo XY|Stereo MS|Super Stereo|Rectangular|Rectangular 3D|5.1 Surround Sound ITU-R BS.775|Birectangle|Octahedron|Tetrahedron|Pravidelný Polygon|Pravidelný Polygon 3D',...
        'ForegroundColor','black','Callback','ambisonics druh','BackgroundColor',...
        [0.9 0.7 0.3],'FontWeight','bold','FontSize',10);
    pocetReproText=uicontrol('Parent',konfigPanel,'Style','Text','Units','Normalized','Position',...
        [0.265 0.37 0.116 0.3],'Tag','pocetReproText','String','Počet reproduktorů:',...
        'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'),'Fontsize',10,'Visible','off');
    pocetRepro=uicontrol('Parent',konfigPanel,'Style','Edit','Units','Normalized','Position',...
        [0.385 0.4 0.05 0.3],'Tag','pocetRepro','String','',...
        'BackgroundColor',[0.6 0.7 0.7],...
        'FontWeight','bold','Fontsize',10,'Visible','off','TooltipString',...
        'Sem zadejte počet reproduktorů reproduktorového pole');
    fiText=uicontrol('Parent',konfigPanel,'Style','Text','Units','Normalized','Position',...
        [0.27 0.37 0.11 0.3],'Tag','fiText','String','Horizontální úhel:',...
        'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'),'Fontsize',10,'Visible','off');
    fiS=uicontrol('Parent',konfigPanel,'Style','Text','Units','Normalized','Position',...
        [0.4355 0.37 0.01 0.3],'Tag','fiS','String','°','HorizontalAlign','left',...
        'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'),'Fontsize',10,'Visible','off');
    fi=uicontrol('Parent',konfigPanel,'Style','Edit','Units','Normalized','Position',...
        [0.385 0.4 0.05 0.3],'Tag','fi','String','0-180',...
        'BackgroundColor',[0.6 0.7 0.7],...
        'FontWeight','bold','Fontsize',10,'Visible','off','TooltipString',...
        'Sem zadejte horizontální úhel mezi předními reproduktory reproduktorového pole');
    epsText=uicontrol('Parent',konfigPanel,'Style','Text','Units','Normalized','Position',...
        [0.27 0.04 0.11 0.3],'Tag','epsText','String','Vertikální úhel:',...
        'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'),'Fontsize',10,'Visible','off');
    epsS=uicontrol('Parent',konfigPanel,'Style','Text','Units','Normalized','Position',...
        [0.4355 0.04 0.01 0.3],'Tag','epsS','String','°','HorizontalAlign','left',...
        'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'),'Fontsize',10,'Visible','off');
    eps=uicontrol('Parent',konfigPanel,'Style','Edit','Units','Normalized','Position',...
        [0.385 0.06 0.05 0.3],'Tag','eps','String','0-180',...
        'BackgroundColor',[0.6 0.7 0.7],...
        'FontWeight','bold','Fontsize',10,'Visible','off','TooltipString',...
        'Sem zadejte vertikální úhel mezi reproduktory reproduktorového pole');
    UHJ=uicontrol('Parent',konfigPanel,'Units','Normalized','Style','Check','Position',...
        [0.49 0.18 0.09 0.6],'Tag','UHJ','String','UHJ','CallBack',...
        'ambisonics UHJ','ForegroundColor','black','BackgroundColor',...
        get(findobj('Tag','konfigPanel'),'BackgroundColor'),'FontWeight','bold','FontSize',11);
    kanalyUHJ=uibuttongroup('Parent',konfigPanel,'Position',[0.58 0.15 0.29 0.76],...        %[0.53 0.1 0.36 0.99]
        'Title','Počet kanálů UHJ','Tag','kanalyUHJ','TitlePosition','centertop','FontWeight','bold',...
        'FontSize',10,'BackgroundColor',get(findobj('Tag','konfigPanel'),'BackgroundColor'));
    kanal2=uicontrol('Parent',kanalyUHJ,'Units','Normalized','Style','Radio','Position',...
        [0.05 0.05 0.3 0.995],'Tag','kanal2','String','2 kanály',...
        'ForegroundColor','black','Enable','off','BackgroundColor',...
        get(findobj('Tag','konfigPanel'),'BackgroundColor'),'FontSize',10);
    kanal3=uicontrol('Parent',kanalyUHJ,'Units','Normalized','Style','Radio','Position',...
        [0.38 0.05 0.3 0.995],'Tag','kanal3','String','3 kanály',...
        'ForegroundColor','black','Enable','off','BackgroundColor',...
        get(findobj('Tag','konfigPanel'),'BackgroundColor'),'FontSize',10);
    kanal4=uicontrol('Parent',kanalyUHJ,'Units','Normalized','Style','Radio','Position',...
        [0.7 0.05 0.3 0.995],'Tag','kanal4','String','4 kanály',...
        'ForegroundColor','black','Enable','off','BackgroundColor',...
        get(findobj('Tag','konfigPanel'),'BackgroundColor'),'FontSize',10);
    
    
%     outPanel=uipanel('Title','Časové průběhy výstupních signálů','Tag','outPanel',...
%         'FontWeight','bold','Fontsize',12,'Position',[0.02 0.01 0.96 0.44],'BackgroundColor',[0.7 0.8 0.7]);
%     0.02 0.45 0.96 0.45


% ------------------Funkce programu-----------------------------------------------------------------

else
    switch(vstpar)
        case('druh')     %zobrazeni prislusnych parametru pri volbe reproduktoroveho pole
            uhj=get(findobj('Tag','UHJ'),'Value');
            druh=get(findobj('Tag','druh'),'Value');
            if uhj==0
                if (druh==5) || (druh==8)
                    set(findobj('Tag','pocetRepro'),'Visible','off')
                    set(findobj('Tag','pocetReproText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','off')
                    set(findobj('Tag','epsText'),'Visible','off')
                    set(findobj('Tag','epsS'),'Visible','off')
                    set(findobj('Tag','fi'),'Visible','on')
                    set(findobj('Tag','fiText'),'Visible','on')
                    set(findobj('Tag','fiS'),'Visible','on')
                elseif druh==6
                    set(findobj('Tag','pocetRepro'),'Visible','off')
                    set(findobj('Tag','pocetReproText'),'Visible','off')
                    set(findobj('Tag','fi'),'Visible','on')
                    set(findobj('Tag','fiS'),'Visible','on')
                    set(findobj('Tag','fiText'),'Visible','on')
                    set(findobj('Tag','eps'),'Visible','on')
                    set(findobj('Tag','epsS'),'Visible','on')
                    set(findobj('Tag','epsText'),'Visible','on')
                elseif druh==9
                    set(findobj('Tag','pocetRepro'),'Visible','off')
                    set(findobj('Tag','pocetReproText'),'Visible','off')
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','on')
                    set(findobj('Tag','epsS'),'Visible','on')
                    set(findobj('Tag','epsText'),'Visible','on')
                elseif druh==11
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','off')
                    set(findobj('Tag','epsS'),'Visible','off')
                    set(findobj('Tag','epsText'),'Visible','off')
                    set(findobj('Tag','pocetRepro'),'Visible','on')
                    set(findobj('Tag','pocetReproText'),'Visible','on')
                elseif druh==12
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','pocetRepro'),'Visible','on')
                    set(findobj('Tag','pocetReproText'),'Visible','on')
                    set(findobj('Tag','eps'),'Visible','on')
                    set(findobj('Tag','epsS'),'Visible','on')
                    set(findobj('Tag','epsText'),'Visible','on')
                else
                    set(findobj('Tag','pocetRepro'),'Visible','off')
                    set(findobj('Tag','pocetReproText'),'Visible','off')
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','off')
                    set(findobj('Tag','epsS'),'Visible','off')
                    set(findobj('Tag','epsText'),'Visible','off')
                end
            else
                if druh==3
                    set(findobj('Tag','pocetRepro'),'Visible','off')
                    set(findobj('Tag','pocetReproText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','off')
                    set(findobj('Tag','epsS'),'Visible','off')
                    set(findobj('Tag','epsText'),'Visible','off')
                    set(findobj('Tag','fi'),'Visible','on')
                    set(findobj('Tag','fiS'),'Visible','on')
                    set(findobj('Tag','fiText'),'Visible','on')
                elseif druh==4
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','off')
                    set(findobj('Tag','epsS'),'Visible','off')
                    set(findobj('Tag','epsText'),'Visible','off')
                    set(findobj('Tag','pocetRepro'),'Visible','on')
                    set(findobj('Tag','pocetReproText'),'Visible','on')
                elseif druh==5
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','pocetRepro'),'Visible','on')
                    set(findobj('Tag','pocetReproText'),'Visible','on')
                    set(findobj('Tag','eps'),'Visible','on')
                    set(findobj('Tag','epsS'),'Visible','on')
                    set(findobj('Tag','epsText'),'Visible','on')
                else
                    set(findobj('Tag','pocetRepro'),'Visible','off')
                    set(findobj('Tag','pocetReproText'),'Visible','off')
                    set(findobj('Tag','fi'),'Visible','off')
                    set(findobj('Tag','fiS'),'Visible','off')
                    set(findobj('Tag','fiText'),'Visible','off')
                    set(findobj('Tag','eps'),'Visible','off')
                    set(findobj('Tag','epsS'),'Visible','off')
                    set(findobj('Tag','epsText'),'Visible','off')
                end
            end
        case('UHJ')             %reakce na zaskrtnuti/odskrtnuti UHJ
            uhj=get(findobj('Tag','UHJ'),'Value');
            pozice=get(findobj('Tag','druh'),'Value');
            if uhj==1
                set(findobj('Tag','kanal2'),'Enable','on')
                set(findobj('Tag','kanal3'),'Enable','on')
                set(findobj('Tag','kanal4'),'Enable','on')
                switch pozice
                    case 5
                        pozice=3;
                    case 11
                        pozice=4;
                    case 12
                        pozice=5;
                    otherwise
                        pozice=1;
                        set(findobj('Tag','pocetRepro'),'Visible','off')
                        set(findobj('Tag','pocetReproText'),'Visible','off')
                        set(findobj('Tag','fi'),'Visible','off')
                        set(findobj('Tag','fiS'),'Visible','off')
                        set(findobj('Tag','fiText'),'Visible','off')
                        set(findobj('Tag','eps'),'Visible','off') 
                        set(findobj('Tag','epsS'),'Visible','off') 
                        set(findobj('Tag','epsText'),'Visible','off')
                end
                set(findobj('Tag','druh'),'Value',pozice)
                set(findobj('Tag','druh'),'String','Mono|Stereo UHJ|Rectangular|Pravidelný Polygon|Pravidelný Polygon 3D')
            else
                set(findobj('Tag','kanal2'),'Enable','off')
                set(findobj('Tag','kanal3'),'Enable','off')
                set(findobj('Tag','kanal4'),'Enable','off')
                switch pozice
                    case 3
                        pozice=5;
                    case 4
                        pozice=11;
                    case 5
                        pozice=12;
                    otherwise
                        pozice=1;
                end
                set(findobj('Tag','druh'),'Value',pozice)
                set(findobj('Tag','druh'),'String',...
                    'Mono|Stereo XY|Stereo MS|Super Stereo|Rectangular|Rectangular 3D|5.1 Surround Sound ITU-R BS.775|Birectangle|Octahedron|Tetrahedron|Pravidelný Polygon|Pravidelný Polygon 3D')
            end
        case('indikator')                                                   %vytvoreni indikatoru vypoctu
            Findikator=figure('Units','Normalized','Name','Upozornění!!!','Resize','off',...
                    'Position',[0.05 0.1 0.2 0.1],'Tag','Findikator','Color',[0.404 0.502 0.5],'NumberTitle',...
                    'off','MenuBar','none');
            uicontrol('Parent',Findikator,'Units','Normalized','Style','Text','Position',...
                        [0.05 0.2 0.9 0.5],'Tag','Tindikator','ForegroundColor','white',...
                        'FontWeight','bold','FontSize',14,'FontAngle','italic','BackgroundColor',...
                        get(Findikator,'Color'),'String','Probíhá výpočet...');
        case('obrazek')        %vyvolani obrazku konkretniho pole
            h=gcbo;
            if findobj('Tag','Omenu')==get(h,'Parent')
                pole=[];
            else
                pole=get(findobj('Tag','pocetRepro'),'UserData');
            end
            if h==findobj('Tag','mono') || strcmp(pole,'mono')
                figure('Menubar','none','Name','Mono','NumberTitle','off')
                imshow('mono.jpg','Border','Tight','InitialMagnification',33)
            elseif h==findobj('Tag','stereo') || strcmp(pole,'stereo')
                figure('Menubar','none','Name','Stereo','NumberTitle','off')
                imshow('stereo.jpg','Border','Tight','InitialMagnification',33)    
            elseif h==findobj('Tag','rectangular') || strcmp(pole,'rectangular')
                figure('Menubar','none','Name','Rectangular','NumberTitle','off')
                imshow('rectangular.jpg','Border','Tight','InitialMagnification',17)
            elseif h==findobj('Tag','rectangular3D') || strcmp(pole,'rectangular3D')
                figure('Menubar','none','Name','Rectangular 3D','NumberTitle','off')
                imshow('rect3D.jpg','Border','Tight','InitialMagnification',50)
            elseif h==findobj('Tag','birectangle') || strcmp(pole,'birectangle')
                figure('Menubar','none','Name','Birectangle','NumberTitle','off')
                imshow('birectangle.jpg','Border','Tight','InitialMagnification',67)
            elseif h==findobj('Tag','octahedron') || strcmp(pole,'octahedron')
                figure('Menubar','none','Name','Octahedron','NumberTitle','off')
                imshow('octahedron.jpg','Border','Tight','InitialMagnification',50)
            elseif h==findobj('Tag','tetrahedron') || strcmp(pole,'tetrahedron')
                figure('Menubar','none','Name','Tetrahedron','NumberTitle','off')
                imshow('tetrahedron.jpg','Border','Tight','InitialMagnification',20)
            elseif h==findobj('Tag','ITU 5.1') || strcmp(pole,'ITU51')
                figure('Menubar','none','Name','5.1 Surround Sound ITU-R BS.775','NumberTitle','off')
                imshow('5.1popsany.jpg','Border','Tight','InitialMagnification',50)
            elseif h==findobj('Tag','pravidelny polygon') || strcmp(pole,'polygon')
                figure('Menubar','none','Name','Pravidelny Polygon','NumberTitle','off')
                imshow('polygon.jpg','Border','Tight','InitialMagnification',25)
            elseif h==findobj('Tag','pravidelny polygon3D') || strcmp(pole,'polygon3D')
                figure('Menubar','none','Name','Pravidelny Polygon 3D','NumberTitle','off')
                imshow('regPol3D.jpg','Border','Tight','InitialMagnification',26)
            end
        case('zdrojMat')             %nacteni zdrojovych souboru B-formatu ze souboru *.mat 
            [jmeno,cesta]=uigetfile('*.mat','Načtení složek B-format ze souboru *.mat');
            if jmeno~=0
                
                ambisonics indikator
                
                slozky=load([cesta,jmeno],'W','X','Y','Z','fvz');
                fvz=slozky.fvz;
                W=slozky.W;
                X=slozky.X;
                Y=slozky.Y;
                Z=slozky.Z;
                
                ambisonics clear
                
                set(findobj('Tag','nadpisW'),'String',strcat(jmeno,' - Složka W'))
                set(findobj('Tag','nadpisX'),'String',strcat(jmeno,' - Složka X'))
                set(findobj('Tag','nadpisY'),'String',strcat(jmeno,' - Složka Y'))
                set(findobj('Tag','nadpisZ'),'String',strcat(jmeno,' - Složka Z'))
                
                ambisonics zobrazIN
            else
            end
        case('zdrojWav')      %vytvoreni okna pro nacteni zdrojovych souboru B-formatu ze souboru *.wav
            Fzdroj=figure('Units','Normalized','Name','Načtení složek B-format ze souborů *.wav',...
                'Position',[0.35 0.4 0.3 0.3],'Tag','Fzdroj','Color',[0.204 0.302 0.5],'NumberTitle',...
                'off','MenuBar','none');
            nactiW=uicontrol('Parent',Fzdroj,'Style','Push','Units','Normalized','Position',...
                [0.05 0.82 0.3 0.12],'Tag','nactiW','String','složka_W',...
                'Callback','ambisonics nactiWav','ForegroundColor','black','BackgroundColor',...
                [0.702 0.78 1],'FontWeight','bold','Fontsize',13);
            nactiX=uicontrol('Parent',Fzdroj,'Style','Push','Units','Normalized','Position',...
                [0.05 0.65 0.3 0.12],'Tag','nactiX','String','složka_X',...
                'Callback','ambisonics nactiWav','ForegroundColor','black','BackgroundColor',...
                [0.702 0.78 1],'FontWeight','bold','Fontsize',13);
            nactiY=uicontrol('Parent',Fzdroj,'Style','Push','Units','Normalized','Position',...
                [0.05 0.48 0.3 0.12],'Tag','nactiY','String','složka_Y',...
                'Callback','ambisonics nactiWav','ForegroundColor','black','BackgroundColor',...
                [0.702 0.78 1],'FontWeight','bold','Fontsize',13);
            nactiZ=uicontrol('Parent',Fzdroj,'Style','Push','Units','Normalized','Position',...
                [0.05 0.31 0.3 0.12],'Tag','nactiZ','String','složka_Z',...
                'Callback','ambisonics nactiWav','ForegroundColor','black','BackgroundColor',...
                [0.702 0.78 1],'FontWeight','bold','Fontsize',13);
            souborW=uicontrol('Parent',Fzdroj,'Style','Text','Units','Normalized','Position',...
                [0.4 0.82 0.55 0.12],'Tag','souborW','String','',...
                'BackgroundColor',[0.6 0.7 0.7],'FontWeight','bold','Fontsize',10);
            souborX=uicontrol('Parent',Fzdroj,'Style','Text','Units','Normalized','Position',...
                [0.4 0.65 0.55 0.12],'Tag','souborX','String','',...
                'BackgroundColor',[0.6 0.7 0.7],'FontWeight','bold','Fontsize',10);
            souborY=uicontrol('Parent',Fzdroj,'Style','Text','Units','Normalized','Position',...
                [0.4 0.48 0.55 0.12],'Tag','souborY','String','',...
                'BackgroundColor',[0.6 0.7 0.7],'FontWeight','bold','Fontsize',10);
            souborZ=uicontrol('Parent',Fzdroj,'Style','Text','Units','Normalized','Position',...
                [0.4 0.31 0.55 0.12],'Tag','souborZ','String','',...
                'BackgroundColor',[0.6 0.7 0.7],'FontWeight','bold','Fontsize',10);
            zobraz=uicontrol('Parent',Fzdroj,'Style','Push','Units','Normalized','Position',...
                [0.35 0.06 0.3 0.16],'Tag','zobraz','String','Zobraz',...
                'Callback','ambisonics zobrazIN','ForegroundColor','black','BackgroundColor',...
                [0.9 0.7 0.3],'FontWeight','bold','Fontsize',15);
        case('nactiWav')            %nacteni zdrojovych souboru B-formatu ze souboru *.wav 
            h=gcbo;
            if h==findobj('Tag','nactiW')
                [jmeno,cesta]=uigetfile('*.wav','Načtení složky W');
                if jmeno~=0
                    [W,fvz]=wavread([cesta,jmeno]);
                    set(findobj('Tag','souborW'),'String',jmeno)
                    set(findobj('Tag','nadpisW'),'String',strcat(jmeno,' - Složka W'))
                end
            elseif h==findobj('Tag','nactiX')
                [jmeno,cesta]=uigetfile('*.wav','Načtení složky X');
                if jmeno~=0
                    [X,fvz]=wavread([cesta,jmeno]);
                    set(findobj('Tag','souborX'),'String',jmeno)
                    set(findobj('Tag','nadpisX'),'String',strcat(jmeno,' - Složka X'))
                end
            elseif h==findobj('Tag','nactiY')
                [jmeno,cesta]=uigetfile('*.wav','Načtení složky Y');
                if jmeno~=0
                    [Y,fvz]=wavread([cesta,jmeno]);
                    set(findobj('Tag','souborY'),'String',jmeno)
                    set(findobj('Tag','nadpisY'),'String',strcat(jmeno,' - Složka Y'))
                end
            elseif h==findobj('Tag','nactiZ')
                [jmeno,cesta]=uigetfile('*.wav','Načtení složky Z');
                if jmeno~=0
                    [Z,fvz]=wavread([cesta,jmeno]);
                    set(findobj('Tag','souborZ'),'String',jmeno)
                    set(findobj('Tag','nadpisZ'),'String',strcat(jmeno,' - Složka Z'))
                end
            end
            ambisonics clear
        case('clear')                   %vycisteni panelu pro zobrazeni vystupnich signalu
            vystupy=get(findobj('Tag','druh'),'UserData');
            if any(vystupy)
                [pocetVzorku,pocetRep]=size(vystupy);
                for k=1:pocetRep
                    tagAX=['signal',num2str(k)]; 
                    tagPOP=['speaker',num2str(k)];
                    tagPLAY=['playS',num2str(k)];
                    delete(findobj('Tag',tagAX))
                    delete(findobj('Tag',tagPOP))
                    delete(findobj('Tag',tagPLAY))
                end
                set(findobj('Tag','druh'),'UserData',[]);
            end
        case('vyberG')      %zajisteni spravne funkce menu Zobrazeni
            typGrafu=gcbo;
            if typGrafu==findobj('Tag','casGraf')
                set(typGrafu,'Checked','on');
                set([findobj('Tag','speGraf') findobj('Tag','intGrafA') ...
                    findobj('Tag','intGraf2') findobj('Tag','intGraf3')],'Checked','off');
            elseif  typGrafu==findobj('Tag','speGraf')
                set(typGrafu,'Checked','on');
                set([findobj('Tag','casGraf') findobj('Tag','intGrafA') ...
                    findobj('Tag','intGraf2') findobj('Tag','intGraf3')],'Checked','off');
            elseif  typGrafu==findobj('Tag','intGrafA')
                set(typGrafu,'Checked','on');
                set([findobj('Tag','casGraf') findobj('Tag','speGraf') ...
                    findobj('Tag','intGraf2') findobj('Tag','intGraf3')],'Checked','off');  
            elseif  typGrafu==findobj('Tag','intGraf2')
                set(typGrafu,'Checked','on');
                set([findobj('Tag','casGraf') findobj('Tag','speGraf') ...
                    findobj('Tag','intGrafA') findobj('Tag','intGraf3')],'Checked','off');    
            elseif  typGrafu==findobj('Tag','intGraf3')
                set(typGrafu,'Checked','on');
                set([findobj('Tag','casGraf') findobj('Tag','speGraf') ...
                    findobj('Tag','intGrafA') findobj('Tag','intGraf2')],'Checked','off');     
            end
            
            if strcmp('on',get(findobj('Tag','inPanel'),'Visible'))
                ambisonics zobrazIN
            elseif strcmp('off',get(findobj('Tag','inPanel'),'Visible'))
                ambisonics vystup
            end
        case('zobrazIN')    %zobrazeni slozek W, X, Y, Z v panelu vstupnich signalu
            if (any(W)==1) && (any(X)==1) && (any(Y)==1) && (any(Z)==1)
                if gcbo==findobj('Tag','zobraz')
                    delete (findobj('Tag','Fzdroj'))
                end
                if isempty(findobj('Tag','Findikator'))
                    ambisonics indikator
                end
                norm=max([max(abs(W)) max(abs(X)) max(abs(Y)) max(abs(Z))]);
                vzorky=length(W);
                t= 0 : 1/fvz : (vzorky-1)/fvz;
                inW=findobj('Tag','zdrojW');
                inX=findobj('Tag','zdrojX');
                inY=findobj('Tag','zdrojY');
                inZ=findobj('Tag','zdrojZ');
                if strcmp('on',get(findobj('Tag','casGraf'),'Checked'));
                    set(findobj('Tag','casGraf'),'UserData','casGraf')
                    axes(inW)
                    plot(t,0.999*(W/norm))
                    set(gca,'Tag','zdrojW','YLim',[-1 1])
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','s({\itt})        \rightarrow')
                    axes(inX)
                    plot(t,0.999*(X/norm))
                    set(gca,'Tag','zdrojX','YLim',[-1 1])
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','s({\itt})        \rightarrow')
                    axes(inY)
                    plot(t,0.999*(Y/norm))
                    set(gca,'Tag','zdrojY','YLim',[-1 1])
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','s({\itt})        \rightarrow')
                    axes(inZ)
                    plot(t,0.999*(Z/norm))
                    set(gca,'Tag','zdrojZ','YLim',[-1 1])
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','s({\itt})        \rightarrow')
                elseif strcmp('on',get(findobj('Tag','speGraf'),'Checked'));
                    set(findobj('Tag','casGraf'),'UserData','speGraf')
                    axes(inW)
                    specgram(0.999*(W/norm),256,fvz)
                    set(gca,'Tag','zdrojW')
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','{\it f}  [Hz]        \rightarrow')
                    axes(inX)
                    specgram(0.999*(X/norm),256,fvz)
                    set(gca,'Tag','zdrojX')
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','{\it f}  [Hz]        \rightarrow')
                    axes(inY)
                    specgram(0.999*(Y/norm),256,fvz)
                    set(gca,'Tag','zdrojY')
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','{\it f}  [Hz]        \rightarrow')
                    axes(inZ)
                    specgram(0.999*(Z/norm),256,fvz)
                    set(gca,'Tag','zdrojZ')
                    set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                    set(get(gca,'Ylabel'),'String','{\it f}  [Hz]        \rightarrow')
                end
                delete (findobj('Tag','Findikator'))
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Načtěte nejdříve všechny zdrojové složky B-formátu pomocí menu Soubor')
            end
        case('zobraz')      %zobrazeni noveho okna s grafy po stisknuti polozky Zobraz v novem okne v menu Zobrazeni
            if (any(W)==1) && (any(X)==1) && (any(Y)==1) && (any(Z)==1)
            ambisonics indikator    
            panel=get(findobj('Tag','inPanel'),'Visible');
            figure('Units','Normalized','Position',[0.0 0.04 1 0.86],'Tag','zobrazIN','NumberTitle','off');
            norm=max([max(abs(W)) max(abs(X)) max(abs(Y)) max(abs(Z))]); 
            vzorky=length(W);
            Xmax=(vzorky-1)/fvz;
            t= 0 : 1/fvz : Xmax;
                if strcmp('on',panel)
                    if strcmp('on',get(findobj('Tag','casGraf'),'Checked'));
                        set(gcf,'Name','Časové průběhy složek B-format')
                        subplot(2,2,1)    
                        plot(t,0.999*(W/norm))
                        axis([0 Xmax -1 1])
                        title('Složka W')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('s({\itt})        \rightarrow')
                        subplot(2,2,2)    
                        plot(t,0.999*(X/norm))
                        axis([0 Xmax -1 1])
                        title('Složka X')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('s({\itt})        \rightarrow')
                        subplot(2,2,3)    
                        plot(t,0.999*(Y/norm))
                        axis([0 Xmax -1 1])
                        title('Složka Y')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('s({\itt})        \rightarrow')
                        subplot(2,2,4)    
                        plot(t,0.999*(Z/norm))
                        axis([0 Xmax -1 1])
                        title('Složka Z')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('s({\itt})        \rightarrow')
                    elseif strcmp('on',get(findobj('Tag','speGraf'),'Checked'));
                        set(gcf,'Name','Spektrogramy složek B-format')
                        subplot(2,2,1)    
                        specgram(0.999*(W/norm),256,fvz)
                        title('Složka W')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('{\it f}  [Hz]        \rightarrow')
                        subplot(2,2,2)    
                        specgram(0.999*(X/norm),256,fvz)
                        title('Složka X')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('{\it f}  [Hz]        \rightarrow')
                        subplot(2,2,3)    
                        specgram(0.999*(Y/norm),256,fvz)
                        title('Složka Y')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('{\it f}  [Hz]        \rightarrow')
                        subplot(2,2,4)    
                        specgram(0.999*(Z/norm),256,fvz)
                        title('Složka Z')
                        xlabel('{\it t}  [s]        \rightarrow')
                        ylabel('{\it f}  [Hz]        \rightarrow')
                    end
                elseif strcmp('off',panel)
                    vystupy=get(findobj('Tag','druh'),'UserData');
                    if any(vystupy)==1
                    popis=get(findobj('Tag','vypocet'),'UserData');
                    norm=max(max(abs(vystupy)));                    
                    [pocetVzorku,pocetRep]=size(vystupy);
                    a=round(pocetRep/2);
                    if strcmp('on',get(findobj('Tag','casGraf'),'Checked'));
                         name=['Časové průběhy výstupních signálů pole ',get(findobj('Tag','outPole'),'String')];
                         set(gcf,'Name',name)
                         for k=1:pocetRep
                              subplot(a,2,k)
                              s=real(vystupy(:,k));
                              plot(t,0.999*(s/norm))
                              if a<2
                                 axis square;
                              end
                              axis([0 Xmax -1 1])
                              title(popis{k})
                              xlabel('{\it t}  [s]        \rightarrow')
                              ylabel('s({\itt})        \rightarrow')
                         end
                     elseif strcmp('on',get(findobj('Tag','speGraf'),'Checked'));
                          name=['Spektrogramy výstupních signálů pole ',get(findobj('Tag','outPole'),'String')];
                          set(gcf,'Name',name)
                          for k=1:pocetRep
                              subplot(a,2,k)
                              s=vystupy(:,k);
                              specgram(0.999*(s/norm),256,fvz)
                              title(popis{k})
                              if a<2
                                 axis square;
                              end
                              xlabel('{\it t}  [s]        \rightarrow')
                              ylabel('{\it f}  [Hz]        \rightarrow')
    %                         ;spectrogram(0.999*(s/norm),150,75,256,fvz)
                          end
                     elseif strcmp('on',get(findobj('Tag','intGraf3'),'Checked')) || strcmp('on',get(findobj('Tag','intGraf2'),'Checked')) ...
                            || strcmp('on',get(findobj('Tag','intGrafA'),'Checked'));
                          if strcmp('on',get(findobj('Tag','intGraf3'),'Checked'))
                              name=['Závislost intenzity výstupních signálů pole ',get(findobj('Tag','outPole'),'String'),...
                                    ' na azimutu a elevaci zdroje zvuku'];
                              set(gcf,'Name',name)
                              set(findobj('Tag','speGraf'),'UserData','intGraf3')
                              typG=1;
                          elseif strcmp('on',get(findobj('Tag','intGraf2'),'Checked'))
                              name=['Závislost intenzity výstupních signálů pole ',get(findobj('Tag','outPole'),'String'),...
                                    ' na azimutu a elevaci zdroje zvuku'];
                              set(gcf,'Name',name)
                              set(findobj('Tag','speGraf'),'UserData','intGraf2')
                              typG=2;
                          else
                              name=['Závislost intenzity výstupních signálů pole ',get(findobj('Tag','outPole'),'String'),...
                                    ' na azimutu zdroje zvuku'];
                              set(gcf,'Name',name)
                              set(findobj('Tag','speGraf'),'UserData','intGrafA')
                              typG=3;
                          end
                          azim=linspace(0,2*pi,100)';   %vypocet fiktivnich slozek B-formatu 
                          elev=linspace(0,2*pi,100)';   %pro zobrazeni zavislosti na azimutu a elevaci
                          [A,E]=meshgrid(azim,elev);
                          xA=A.*(180/pi);
                          xE=E.*(180/pi);
                          speaker=cell(1,pocetRep);
                          for i=1:pocetRep
                              speaker{i}=zeros(100,100);
                          end
                          xW=zeros(100,100);
                          xX=zeros(100,100);
                          xY=zeros(100,100);
                          xZ=zeros(100,100);
                            for i=1:100
                               for j=1:100
                                    xW(i,j)=1/sqrt(2);
                                    xX(i,j)=cos(A(i,j))*cos(E(i,j));
                                    xY(i,j)=sin(A(i,j))*cos(E(i,j));
                                    xZ(i,j)=sin(E(i,j));
                                end
                            end
                            fc=get(findobj('Tag','filtry'),'UserData');
                            if isempty(fc)
                                fc=500;
                            end
                            pole=get(findobj('Tag','pocetRepro'),'UserData'); %vypocet vystupnich signalu                
                            uhj=get(findobj('Tag','UHJ'),'UserData');         %pro tyto fiktivni slozky B-formatu
                            if uhj==1
                                kanaly=get(findobj('Tag','kanalyUHJ'),'UserData');
                                switch pole
                                    case('mono')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'mono','UHJ',kanaly,fc);
                                    case('stereo')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereo','UHJ',kanaly,fc);
                                    case('rectangular')
                                        fi=get(findobj('Tag','fi'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'rectangular','UHJ',kanaly,fc,fi);
                                    case('polygon')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly','UHJ',kanaly,fc); 
                                    case('polygon3D')
                                        if mod(pocetRep,2)==0
                                            if kanaly~=4
                                                set(findobj('Tag','kanalyUHJ'),'SelectedObject',findobj('Tag','kanal4'));
                                                kanaly=4;
                                            end
                                            eps=get(findobj('Tag','eps'),'UserData');
                                            [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly3D','UHJ',kanaly,fc,eps);
                                        else
                                            ambisonics error
                                            set(findobj('Tag','Terror'),'String','Počet reproduktorů v pravidelném 3D polygonu musí být sudý!!!')
                                            set(findobj('Tag','druh'),'UserData',[])
                                        end    
                                end
                            else
                                switch pole
                                    case('mono')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'mono');
                                    case('stereo')
                                        typ=get(findobj('Tag','kanal2'),'UserData');
                                        switch typ
                                            case('XY')
                                                [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereoXY');
                                            case('MS')
                                                [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereoMS');
                                            case('S')
                                                [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereoS');
                                        end
                                    case('rectangular')
                                        fi=get(findobj('Tag','fi'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'rectangular',fc,fi); 
                                    case('rectangular3D')
                                        fi=get(findobj('Tag','fi'),'UserData');
                                        eps=get(findobj('Tag','eps'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'rectangular3D',fc,fi,eps);
                                    case('birectangle')
                                        fi=get(findobj('Tag','fi'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'birectangle',fc,fi);
                                    case('octahedron')
                                        eps=get(findobj('Tag','eps'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'octahedron',fc,eps);
                                    case('tetrahedron')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'tetrahedron',fc);
                                    case('ITU51')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'ITU51');
                                    case('polygon')
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly',fc);
                                    case('polygon3D')
                                        if mod(pocetRep,2)==0
                                            eps=get(findobj('Tag','eps'),'UserData');
                                            [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly3D',fc,eps);   
                                        else
                                            ambisonics error
                                            set(findobj('Tag','Terror'),'String','Počet reproduktorů v pravidelném 3D polygonu musí být sudý!!!')
                                            set(findobj('Tag','druh'),'UserData',[])
                                        end     
                                end    
                            end
                        norm=max(max(abs(cell2mat(speaker))));      %zobrazeni prislusnych zavislosti
                        for i=1:pocetRep
                            speaker{i}=0.999*(abs(speaker{i})/norm);
                        end  
                        if typG==3
                            for i=1:pocetRep
                                subplot(a,2,i)
                                S=speaker{i};
                                plot(azim.*(180/pi),S(1,:))
                                title(popis{i})
                                if a<2
                                   axis square;
                                end
                                axis([0 360 0 1])
                                xlabel('azimut [°]  \rightarrow')
                                ylabel('s({\itt})  \rightarrow')
                            end
                        elseif typG==2
                            for i=1:pocetRep
                                subplot(a,2,i)
                                S=speaker{i};
                                imagesc(azim.*(180/pi),elev.*(180/pi),S)
                                title(popis{i})
                                if a<2
                                    axis square;
                                end
                                axis([0 360 0 360])
                                xlabel('azimut [°]  \rightarrow')
                                ylabel('\leftarrow  elevace [°]')
                            end
                        else
                            for i=1:pocetRep
                                subplot(a,2,i)
                                S=speaker{i};
                                surf(xA,xE,S)
                                title(popis{i});box on;
                                if a<2
                                    axis square;
                                end
                                axis([0 360 0 360 0 1])
                                xlabel('azimut [°]  \rightarrow')
                                ylabel('\leftarrow  elevace [°]')
                                zlabel('s({\itt})  \rightarrow')
                            end
                        end
                    end
                    else
                        ambisonics error
                        set(findobj('Tag','Terror'),'String','Nebyly vypočteny žádné výstupní signály určené pro reproduktory')
                    end
                end
                delete (findobj('Tag','Findikator'))
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Načtěte nejdříve všechny zdrojové složky B-formátu pomocí menu Soubor')
            end
        case('playIN')      %prehravani vstupnich slozek B-formatu po stisku tlacitka play
            if (any(W)==1) && (any(X)==1) && (any(Y)==1) && (any(Z)==1)
                if isempty(player)==0
                    stop(player);
                end
                set([findobj('Tag','inInfo') findobj('Tag','outInfo')],'String','Přehrávání...')
                set([findobj('Tag','inPause') findobj('Tag','outPause')],'Enable','on')
                h=gcbo;
                    if h==findobj('Tag','playW') && (any(W)==1);
                        player=audioplayer(W,fvz);
                    elseif h==findobj('Tag','playX') && (any(X)==1);
                        player=audioplayer(X,fvz);
                    elseif h==findobj('Tag','playY') && (any(Y)==1);
                        player=audioplayer(Y,fvz);
                    elseif h==findobj('Tag','playZ') && (any(Z)==1);
                        player=audioplayer(Z,fvz);
                    end
                set(player,'stopFcn','ambisonics konecStopy')
                play(player)
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Načtěte nejdříve všechny zdrojové složky B-formátu pomocí menu Soubor')
            end
        case('playOUT')      %prehravani vystupnich slozek B-formatu po stisku tlacitka play
            if isempty(player)==0
                stop(player);
            end
            set([findobj('Tag','outInfo') findobj('Tag','inInfo')],'String','Přehrávání...')
            set([findobj('Tag','inPause') findobj('Tag','outPause')],'Enable','on')
            h=gcbo;
            [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
                for i=1:pocetRep
                    h1=findobj('Tag',['playS',num2str(i)]);
                    if h==h1
                        vystupy=get(findobj('Tag','druh'),'UserData');
                        s=vystupy(:,i);
                        player=audioplayer(s,fvz);
                        break
                    end
                end
            set(player,'stopFcn','ambisonics konecStopy')    
            play(player)
        case('konecStopy')  %ukonceni prehravani po skonceni zvukove stopy
            if isempty(gcbo)==0
                set([findobj('Tag','outInfo') findobj('Tag','inInfo')],'String','')
            else
                set([findobj('Tag','outInfo') findobj('Tag','inInfo')],'String','')
                set([findobj('Tag','inPause') findobj('Tag','outPause')],'Enable','off','UserData',0)
            end
        case('stop')    %reakce na tlacitko stop...ukonceni prehravani
            stop(player)
            set([findobj('Tag','outInfo') findobj('Tag','inInfo')],'String','')
            set([findobj('Tag','inPause') findobj('Tag','outPause')],'Enable','off','UserData',0)
        case('pause')   %reakce na tlacitko pause...ukonceni nebo znovuspusteni prehravani
            stav=get(findobj('Tag','inPause'),'UserData');
            if stav==0
                pause(player)
                set([findobj('Tag','outInfo') findobj('Tag','inInfo')],'String','Pauza')
                set(findobj('Tag','inPause'),'UserData',1)
            else
                resume(player)
                set([findobj('Tag','outInfo') findobj('Tag','inInfo')],'String','Přehrávání...')
                set(findobj('Tag','inPause'),'UserData',0)
            end
        case('vypocet')     %vypocet vystupnich signalu ze slozek B-formatu po stisku tlacitka Vypocet
            if (any(W)==1) && (any(X)==1) && (any(Y)==1) && (any(Z)==1)
                ambisonics indikator
                [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
                for k=1:pocetRep
                        tagAX=['signal',num2str(k)]; 
                        tagPOP=['speaker',num2str(k)];
                        tagPLAY=['playS',num2str(k)];
                        delete(findobj('Tag',tagAX))
                        delete(findobj('Tag',tagPOP))
                        delete(findobj('Tag',tagPLAY))
                end
                fc=get(findobj('Tag','filtry'),'UserData');
                if isempty(fc)
                    fc=500;
                end
                uhj=get(findobj('Tag','UHJ'),'Value');
                if uhj==1
                    set(findobj('Tag','UHJ'),'UserData',1);
                    pocetK=get(findobj('Tag','kanalyUHJ'),'SelectedObject');
                    if pocetK==findobj('Tag','kanal2')
                        kanaly=2;
                    elseif pocetK==findobj('Tag','kanal3')
                        kanaly=3;
                    else 
                        kanaly=4;
                    end
                    set(findobj('Tag','kanalyUHJ'),'UserData',kanaly)
                    druh=get(findobj('Tag','druh'),'Value');
                    switch druh
                        case 1
                            [s1]=dekoder(W,X,Y,Z,'mono','UHJ',kanaly,fc);
                            set(findobj('Tag','druh'),'UserData',s1)
                            set(findobj('Tag','pocetRepro'),'UserData','mono')
                            set(findobj('Tag','vypocet'),'UserData',{'M'})
                            set(findobj('Tag','outPole'),'String','Mono UHJ')
                        case 2
                            [s1 s2]=dekoder(W,X,Y,Z,'stereo','UHJ',kanaly,fc);
                            set(findobj('Tag','druh'),'UserData',[s1 s2])
                            set(findobj('Tag','pocetRepro'),'UserData','stereo')
                            set(findobj('Tag','vypocet'),'UserData',{'L','R'})
                            set(findobj('Tag','outPole'),'String','Stereo UHJ')
                        case 3
                            fi=str2double(get(findobj('Tag','fi'),'String'));
                            if fi>=0 && fi<=180
                                set(findobj('Tag','fi'),'UserData',fi)
                                [s1 s2 s3 s4]=dekoder(W,X,Y,Z,'rectangular','UHJ',kanaly,fc,fi);
                                set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4])
                                set(findobj('Tag','pocetRepro'),'UserData','rectangular')
                                set(findobj('Tag','vypocet'),'UserData',{'LF','RF','LB','RB'})
                                set(findobj('Tag','outPole'),'String','Rectangular UHJ')
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte horizontální úhel mezi předními reproduktory v rozmezí 0-180°')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                        case 4
                            pocetRep=str2double(get(findobj('Tag','pocetRepro'),'String'));
                            if pocetRep>0
                                signaly=cell(1,pocetRep);
                                [signaly{1:pocetRep}]=dekoder(W,X,Y,Z,'regPoly','UHJ',kanaly,fc);
                                set(findobj('Tag','druh'),'UserData',cell2mat(signaly))
                                set(findobj('Tag','pocetRepro'),'UserData','polygon')
                                for i=1:pocetRep
                                    rep{i}=['Speaker ',num2str(i)];
                                    set(findobj('Tag','vypocet'),'UserData',rep)
                                end
                                set(findobj('Tag','outPole'),'String','Pravidelný Polygon UHJ')
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte počet reproduktorů pole')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                        case 5
                            pocetRep=str2double(get(findobj('Tag','pocetRepro'),'String'));
                            if pocetRep>0
                                if mod(pocetRep,2)==0
                                    eps=str2double(get(findobj('Tag','eps'),'String'));
                                    if eps>=0 && eps<=180
                                        set(findobj('Tag','eps'),'UserData',eps);
                                        signaly=cell(1,pocetRep);
                                        if kanaly~=4
                                            set(findobj('Tag','kanalyUHJ'),'SelectedObject',findobj('Tag','kanal4'));
                                            kanaly=4;
                                        end
                                        [signaly{1:pocetRep}]=dekoder(W,X,Y,Z,'regPoly3D','UHJ',kanaly,fc,eps);
                                        set(findobj('Tag','druh'),'UserData',cell2mat(signaly))
                                        set(findobj('Tag','pocetRepro'),'UserData','polygon3D')
                                        for i=1:(pocetRep/2)
                                            rep{i}=['Dspeaker ',num2str(i)];
                                            set(findobj('Tag','vypocet'),'UserData',rep)
                                        end
                                        for i=((pocetRep/2)+1):pocetRep
                                            rep{i}=['Uspeaker ',num2str(i-(pocetRep/2))];
                                            set(findobj('Tag','vypocet'),'UserData',rep)
                                        end
                                        set(findobj('Tag','outPole'),'String','Pravidelný Polygon 3D UHJ')
                                    else
                                        ambisonics error
                                        set(findobj('Tag','Terror'),'String','Zadejte vertikální úhel mezi předními reproduktory v rozmezí 0-180°')
                                        set(findobj('Tag','druh'),'UserData',[])
                                    end
                                else
                                    ambisonics error
                                    set(findobj('Tag','Terror'),'String','Počet reproduktorů v pravidelném 3D polygonu musí být sudý!!!')
                                    set(findobj('Tag','druh'),'UserData',[])
                                end
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte počet reproduktorů pole')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                    end
                else
                    set(findobj('Tag','UHJ'),'UserData',0);
                    druh=get(findobj('Tag','druh'),'Value');
                    switch druh
                        case 1
                            [s1]=dekoder(W,X,Y,Z,'mono');
                            set(findobj('Tag','druh'),'UserData',s1)
                            set(findobj('Tag','pocetRepro'),'UserData','mono')
                            set(findobj('Tag','vypocet'),'UserData',{'M'})
                            set(findobj('Tag','outPole'),'String','Mono')
                        case 2
                            [s1 s2]=dekoder(W,X,Y,Z,'stereoXY');
                            set(findobj('Tag','druh'),'UserData',[s1 s2])
                            set(findobj('Tag','pocetRepro'),'UserData','stereo')
                            set(findobj('Tag','kanal2'),'UserData','XY')
                            set(findobj('Tag','vypocet'),'UserData',{'L','R'})
                            set(findobj('Tag','outPole'),'String','Stereo XY')
                        case 3
                            [s1 s2]=dekoder(W,X,Y,Z,'stereoMS');
                            set(findobj('Tag','druh'),'UserData',[s1 s2])
                            set(findobj('Tag','pocetRepro'),'UserData','stereo')
                            set(findobj('Tag','kanal2'),'UserData','MS')
                            set(findobj('Tag','vypocet'),'UserData',{'L','R'})
                            set(findobj('Tag','outPole'),'String','Stereo MS')
                        case 4
                            [s1 s2]=dekoder(W,X,Y,Z,'stereoS');
                            set(findobj('Tag','druh'),'UserData',[s1 s2])
                            set(findobj('Tag','pocetRepro'),'UserData','stereo')
                            set(findobj('Tag','kanal2'),'UserData','S')
                            set(findobj('Tag','vypocet'),'UserData',{'L','R'})
                            set(findobj('Tag','outPole'),'String','Super Stereo')
                        case 5
                            fi=str2double(get(findobj('Tag','fi'),'String'));
                            if fi>=0 && fi<=180
                                set(findobj('Tag','fi'),'UserData',fi);
                                [s1 s2 s3 s4]=dekoder(W,X,Y,Z,'rectangular',fc,fi);
                                set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4])
                                set(findobj('Tag','pocetRepro'),'UserData','rectangular')
                                set(findobj('Tag','vypocet'),'UserData',{'LF','RF','LB','RB'})
                                set(findobj('Tag','outPole'),'String','Rectangular')
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte horizontální úhel mezi předními reproduktory v rozmezí 0-180°')
                                set(findobj('Tag','druh'),'UserData',[])
                            end    
                        case 6
                            fi=str2double(get(findobj('Tag','fi'),'String'));
                            if fi>=0 && fi<=180
                                eps=str2double(get(findobj('Tag','eps'),'String'));
                                if eps>=0 && eps<=180
                                    set(findobj('Tag','fi'),'UserData',fi);
                                    set(findobj('Tag','eps'),'UserData',eps);
                                    [s1 s2 s3 s4 s5 s6 s7 s8]=dekoder(W,X,Y,Z,'rectangular3D',fc,fi,eps);
                                    set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4 s5 s6 s7 s8])
                                    set(findobj('Tag','pocetRepro'),'UserData','rectangular3D')
                                    set(findobj('Tag','vypocet'),'UserData',{'LFD','RFD','LBD','RBD','LFU','RFU','LBU','RBU'})
                                    set(findobj('Tag','outPole'),'String','Rectangular 3D')
                                else
                                    ambisonics error
                                    set(findobj('Tag','Terror'),'String','Zadejte vertikální úhel mezi předními reproduktory v rozmezí 0-180°')
                                    set(findobj('Tag','druh'),'UserData',[])
                                end
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte horizontální úhel mezi předními reproduktory v rozmezí 0-180°')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                        case 7
                            [s1 s2 s3 s4]=dekoder(W,X,Y,Z,'ITU51');
                            set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4])
                            set(findobj('Tag','pocetRepro'),'UserData','ITU51')
                            set(findobj('Tag','vypocet'),'UserData',{'L','R','SL','SR'})
                            set(findobj('Tag','outPole'),'String','5.1 Surround Sound ITU-R BS.775')
                        case 8
                            fi=str2double(get(findobj('Tag','fi'),'String'));
                            if fi>=0 && fi<=180
                                set(findobj('Tag','fi'),'UserData',fi);
                                [s1 s2 s3 s4 s5 s6 s7 s8]=dekoder(W,X,Y,Z,'birectangle',fc,fi);
                                set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4 s5 s6 s7 s8])
                                set(findobj('Tag','pocetRepro'),'UserData','birectangle')
                                set(findobj('Tag','vypocet'),'UserData',{'LF','RF','LB','RB','LU','RU','LD','RD'})
                                set(findobj('Tag','outPole'),'String','Birectangle')
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte horizontální úhel mezi předními reproduktory v rozmezí 0-180°')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                        case 9
                            eps=str2double(get(findobj('Tag','eps'),'String'));
                            if eps>=0 && eps<=180
                                set(findobj('Tag','eps'),'UserData',eps);
                                [s1 s2 s3 s4 s5 s6]=dekoder(W,X,Y,Z,'octahedron',fc,eps);
                                set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4 s5 s6])
                                set(findobj('Tag','pocetRepro'),'UserData','octahedron')
                                set(findobj('Tag','vypocet'),'UserData',{'FU','FD','BU','BD','L','R'})
                                set(findobj('Tag','outPole'),'String','Octahedron')
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte vertikální úhel mezi předními reproduktory v rozmezí 0-180°')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                        case 10
                            [s1 s2 s3 s4]=dekoder(W,X,Y,Z,'tetrahedron',fc);
                            set(findobj('Tag','druh'),'UserData',[s1 s2 s3 s4])
                            set(findobj('Tag','pocetRepro'),'UserData','tetrahedron')
                            set(findobj('Tag','vypocet'),'UserData',{'LFU','RFD','LBD','RBU'})
                            set(findobj('Tag','outPole'),'String','Tetrahedron')
                        case 11
                            pocetRep=str2double(get(findobj('Tag','pocetRepro'),'String'));
                            if pocetRep>0
                                signaly=cell(1,pocetRep);
                                [signaly{1:pocetRep}]=dekoder(W,X,Y,Z,'regPoly',fc);
                                set(findobj('Tag','druh'),'UserData',cell2mat(signaly))
                                set(findobj('Tag','pocetRepro'),'UserData','polygon')
                                for i=1:pocetRep
                                    rep{i}=['Speaker ',num2str(i)];
                                    set(findobj('Tag','vypocet'),'UserData',rep)
                                end
                                set(findobj('Tag','outPole'),'String','Pravidelný Polygon')
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte počet reproduktorů pole')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                        case 12
                            pocetRep=str2double(get(findobj('Tag','pocetRepro'),'String'));
                            if pocetRep>0
                                if mod(pocetRep,2)==0
                                    eps=str2double(get(findobj('Tag','eps'),'String'));
                                    if eps>=0 && eps<=180
                                        set(findobj('Tag','eps'),'UserData',eps);
                                        signaly=cell(1,pocetRep);
                                        [signaly{1:pocetRep}]=dekoder(W,X,Y,Z,'regPoly3D',fc,eps);
                                        set(findobj('Tag','druh'),'UserData',cell2mat(signaly))
                                        set(findobj('Tag','pocetRepro'),'UserData','polygon3D')
                                        for i=1:(pocetRep/2)
                                            rep{i}=['Dspeaker ',num2str(i)];
                                            set(findobj('Tag','vypocet'),'UserData',rep)
                                        end
                                        for i=((pocetRep/2)+1):pocetRep
                                            rep{i}=['Uspeaker ',num2str(i-(pocetRep/2))];
                                            set(findobj('Tag','vypocet'),'UserData',rep)
                                        end
                                        set(findobj('Tag','outPole'),'String','Pravidelný Polygon 3D')
                                    else
                                        ambisonics error
                                        set(findobj('Tag','Terror'),'String','Zadejte vertikální úhel mezi předními reproduktory v rozmezí 0-180°')
                                        set(findobj('Tag','druh'),'UserData',[])
                                    end
                                else
                                    ambisonics error
                                    set(findobj('Tag','Terror'),'String','Počet reproduktorů v pravidelném 3D polygonu musí být sudý!!!')
                                    set(findobj('Tag','druh'),'UserData',[])
                                end
                            else
                                ambisonics error
                                set(findobj('Tag','Terror'),'String','Zadejte počet reproduktorů pole')
                                set(findobj('Tag','druh'),'UserData',[])
                            end
                    end
                end 
                if any(findobj('Tag','Ferror'))
                    set(findobj('Tag','outPole'),'String','')
                elseif any(get(findobj('Tag','druh'),'UserData'))==1 
                    ambisonics vystup
                    if strcmp('on',get(findobj('Tag','inPanel'),'Visible'))
                        set(findobj('Tag','inPanel'),'Visible','off')
                        set(findobj('Tag','outPanel'),'Visible','on')
                    end
                    ambisonics obrazek
                end
                delete (findobj('Tag','Findikator'))
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Načtěte nejdříve všechny zdrojové složky B-formátu pomocí menu Soubor')
            end
        case('prepni')  %prepinani panelu vstupnich a vystupnich signalu
            if strcmp('on',get(findobj('Tag','inPanel'),'Visible'))
                set(findobj('Tag','inPanel'),'Visible','off')
                set(findobj('Tag','outPanel'),'Visible','on')
                set([findobj('Tag','casGraf') findobj('Tag','speGraf') findobj('Tag','intGrafA') ...
                    findobj('Tag','intGraf2') findobj('Tag','intGraf3')],'Enable','on','Checked','off');
                grafO=get(findobj('Tag','speGraf'),'UserData');
                if any(grafO)
                    set(findobj('Tag',grafO),'Checked','on')
                else
                    set(findobj('Tag','casGraf'),'Checked','on')
                end
                [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
                if pocetVzorku==0
                    ambisonics error
                    set(findobj('Tag','Terror'),'String','Nebyly vypočteny žádné výstupní signály určené pro reproduktory')
                end
            else
                set(findobj('Tag','outPanel'),'Visible','off')
                set(findobj('Tag','inPanel'),'Visible','on')
                set([findobj('Tag','intGrafA') ...
                    findobj('Tag','intGraf2') findobj('Tag','intGraf3')],'Enable','off','Checked','off');
                set([findobj('Tag','casGraf') findobj('Tag','speGraf')],'Checked','off');
                grafI=get(findobj('Tag','casGraf'),'UserData');
                if any(grafI)
                    set(findobj('Tag',grafI),'Checked','on')
                else
                    set(findobj('Tag','casGraf'),'Checked','on')
                end    
            end
        case('vystup')      %vykreslovani zavislosti vystupnich signalu v panelu vystupnich signalu
            [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
            
            if gcbo~=findobj('Tag','vypocet')
                for k=1:pocetRep
                        tagAX=['signal',num2str(k)]; 
                        tagPOP=['speaker',num2str(k)];
                        tagPLAY=['playS',num2str(k)];
                        delete(findobj('Tag',tagAX))
                        delete(findobj('Tag',tagPOP))
                        delete(findobj('Tag',tagPLAY))
                end
            end
            
            if any(pocetVzorku)==1
                if isempty(findobj('Tag','Findikator'))
                    ambisonics indikator
                end
                if strcmp('on',get(findobj('Tag','inPanel'),'Visible'))
                    ambisonics prepni
                end
                popis=get(findobj('Tag','vypocet'),'UserData');
                vystupy=get(findobj('Tag','druh'),'UserData');
                norm=max(max(abs(vystupy)));
                t= 0 : 1/fvz : (pocetVzorku-1)/fvz;
                a=round(pocetRep/2);
                b=0.95/a;
                c=b/6;
                pocatek=0.96-(4.5*c);
                pom=a-(pocetRep/2);
                cislo=0;
                if strcmp('on',get(findobj('Tag','casGraf'),'Checked'));
                    set(findobj('Tag','speGraf'),'UserData','casGraf')
                    figure (1)
                    for k=1:a
                        cislo=cislo+1;
                        tagAX1=['signal',num2str(cislo)];
                        tagPLAY1=['playS',num2str(cislo)];
                        tagPOP1=['speaker',num2str(cislo)];
                        axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.05 pocatek 0.4 (4*c)],...
                            'Tag',tagAX1);
                        uicontrol('Parent',findobj('Tag','outPanel'),'Style','Push','Units','Normalized','Position',...
                            [0.46 (pocatek+c) 0.035 (2*c)],'Tag',tagPLAY1,'String','I>',...
                            'Callback','ambisonics playOUT','ForegroundColor','black','BackgroundColor',...
                            [0.702 0.78 1],'FontWeight','bold','Fontsize',22);
                        uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                            [0.2 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP1,'ForegroundColor','black',...
                            'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                            get(findobj('Tag','outPanel'),'BackgroundColor'));
                        set(findobj('Tag',tagPOP1),'String',popis{cislo})
                        s=real(vystupy(:,cislo));
                        plot(t,0.999*(s/norm))
                        set(gca,'Tag',tagAX1,'YLim',[-1 1])
                        set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                        set(get(gca,'Ylabel'),'String','s({\itt})        \rightarrow')
                        if (k~=a) || (pom==0)
                            cislo=cislo+1;
                            tagAX2=['signal',num2str(cislo)];
                            tagPLAY2=['playS',num2str(cislo)];
                            tagPOP2=['speaker',num2str(cislo)];
                            axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.549 pocatek 0.4 (4*c)],...
                                'Tag',tagAX2,'UicontextMenu',findobj('Tag','CM'));
                            uicontrol('Parent',findobj('Tag','outPanel'),'Style','Push','Units','Normalized','Position',...
                                [0.959 (pocatek+c) 0.035 (2*c)],'Tag',tagPLAY2,'String','I>',...
                                'Callback','ambisonics playOUT','ForegroundColor','black','BackgroundColor',...
                                [0.702 0.78 1],'FontWeight','bold','Fontsize',22);
                            uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                                [0.699 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP2,'ForegroundColor','black',...
                                'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                                get(findobj('Tag','outPanel'),'BackgroundColor'));
                            set(findobj('Tag',tagPOP2),'String',popis{cislo})
                            s=real(vystupy(:,cislo));
                            plot(t,0.999*(s/norm))
                            set(gca,'Tag',tagAX2,'YLim',[-1 1])
                            set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                            set(get(gca,'Ylabel'),'String','s({\itt})        \rightarrow')
                        end
                        pocatek=pocatek-b;
                    end
                elseif strcmp('on',get(findobj('Tag','speGraf'),'Checked'));
                    set(findobj('Tag','speGraf'),'UserData','speGraf')
                    figure (1)
                    for k=1:a
                        cislo=cislo+1;
                        tagAX1=['signal',num2str(cislo)];
                        tagPLAY1=['playS',num2str(cislo)];
                        tagPOP1=['speaker',num2str(cislo)];
                        axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.05 pocatek 0.4 (4*c)],...
                            'Tag',tagAX1,'UicontextMenu',findobj('Tag','CM'));
                        uicontrol('Parent',findobj('Tag','outPanel'),'Style','Push','Units','Normalized','Position',...
                            [0.46 (pocatek+c) 0.035 (2*c)],'Tag',tagPLAY1,'String','I>',...
                            'Callback','ambisonics playOUT','ForegroundColor','black','BackgroundColor',...
                            [0.702 0.78 1],'FontWeight','bold','Fontsize',22);
                        uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                            [0.2 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP1,'ForegroundColor','black',...
                            'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                            get(findobj('Tag','outPanel'),'BackgroundColor'));
                        set(findobj('Tag',tagPOP1),'String',popis{cislo})
                        s=vystupy(:,cislo);
                        specgram(0.999*(s/norm),256,fvz)
%                         spectrogram(0.999*(s/norm),150,75,256,fvz);
                        set(gca,'Tag',tagAX1)
                        set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                        set(get(gca,'Ylabel'),'String','{\it f}  [Hz]        \rightarrow')
                        if (k~=a) || (pom==0)
                            cislo=cislo+1;
                            tagAX2=['signal',num2str(cislo)];
                            tagPLAY2=['playS',num2str(cislo)];
                            tagPOP2=['speaker',num2str(cislo)];
                            axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.549 pocatek 0.4 (4*c)],...
                                'Tag',tagAX2,'UicontextMenu',findobj('Tag','CM'));
                            uicontrol('Parent',findobj('Tag','outPanel'),'Style','Push','Units','Normalized','Position',...
                                [0.959 (pocatek+c) 0.035 (2*c)],'Tag',tagPLAY2,'String','I>',...
                                'Callback','ambisonics playOUT','ForegroundColor','black','BackgroundColor',...
                                [0.702 0.78 1],'FontWeight','bold','Fontsize',22);
                            uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                                [0.699 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP2,'ForegroundColor','black',...
                                'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                                get(findobj('Tag','outPanel'),'BackgroundColor'));
                            set(findobj('Tag',tagPOP2),'String',popis{cislo})
                            s=vystupy(:,cislo);
                            specgram(0.999*(s/norm),256,fvz)
%                             spectrogram(0.999*(s/norm),150,75,256,fvz);
                            set(gca,'Tag',tagAX2)
                            set(get(gca,'Xlabel'),'String','{\it t}  [s]        \rightarrow')
                            set(get(gca,'Ylabel'),'String','{\it f}  [Hz]        \rightarrow')
                        end
                        pocatek=pocatek-b;
                    end
                elseif strcmp('on',get(findobj('Tag','intGraf3'),'Checked')) || strcmp('on',get(findobj('Tag','intGraf2'),'Checked')) ...
                        || strcmp('on',get(findobj('Tag','intGrafA'),'Checked'));
                    if strcmp('on',get(findobj('Tag','intGraf3'),'Checked'))
                        set(findobj('Tag','speGraf'),'UserData','intGraf3')
                        typG=1;
                    elseif strcmp('on',get(findobj('Tag','intGraf2'),'Checked'))
                        set(findobj('Tag','speGraf'),'UserData','intGraf2')
                        typG=2;
                    else
                        set(findobj('Tag','speGraf'),'UserData','intGrafA')
                        typG=3;
                    end
                    azim=linspace(0,2*pi,100)';     %vypocet fiktivnich slozek B-formatu 
                    elev=linspace(0,2*pi,100)';     %pro zobrazeni zavislosti na azimutu a elevaci
                    [A,E]=meshgrid(azim,elev);
                    xA=A.*(180/pi);
                    xE=E.*(180/pi);
                    speaker=cell(1,pocetRep);
                    for i=1:pocetRep
                        speaker{i}=zeros(100,100);
                    end
                    xW=zeros(100,100);
%                     xX=zeros(100,100);
%                     xY=zeros(100,100);
%                     xZ=zeros(100,100);
%                     for i=1:100
%                         for j=1:100
%                             xW(i,j)=1/sqrt(2);
%                             xX(i,j)=cos(A(i,j))*cos(E(i,j));
%                             xY(i,j)=sin(A(i,j))*cos(E(i,j));
%                             xZ(i,j)=sin(E(i,j));
%                         end
%                     end
                    xW(:,:)=1/sqrt(2);
                    xX=cos(A).*cos(E);
                    xY=sin(A).*cos(E);
                    xZ=sin(E);
                    fc=get(findobj('Tag','filtry'),'UserData');
                    if isempty(fc)
                        fc=500;
                    end
                    pole=get(findobj('Tag','pocetRepro'),'UserData');    %vypocet vystupnich signalu             
                    uhj=get(findobj('Tag','UHJ'),'UserData');            %pro tyto fiktivni slozky B-formatu
                        if uhj==1
                            kanaly=get(findobj('Tag','kanalyUHJ'),'UserData');
                            switch pole
                                case('mono')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'mono','UHJ',kanaly,fc);
                                case('stereo')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereo','UHJ',kanaly,fc);
                                case('rectangular')
                                    fi=get(findobj('Tag','fi'),'UserData');
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'rectangular','UHJ',kanaly,fc,fi);
                                case('polygon')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly','UHJ',kanaly,fc); 
                                case('polygon3D')
                                    if mod(pocetRep,2)==0
                                        if kanaly~=4
                                            set(findobj('Tag','kanalyUHJ'),'SelectedObject',findobj('Tag','kanal4'));
                                            kanaly=4;
                                        end
                                        eps=get(findobj('Tag','eps'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly3D','UHJ',kanaly,fc,eps);
                                    else
                                        ambisonics error
                                        set(findobj('Tag','Terror'),'String','Počet reproduktorů v pravidelném 3D polygonu musí být sudý!!!')
                                        set(findobj('Tag','druh'),'UserData',[])
                                    end    
                            end
                        else
                            switch pole
                                case('mono')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'mono');
                                case('stereo')
                                    typ=get(findobj('Tag','kanal2'),'UserData');
                                    switch typ
                                        case('XY')
                                            [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereoXY');
                                        case('MS')
                                            [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereoMS');
                                        case('S')
                                            [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'stereoS');
                                    end
                                case('rectangular')
                                    fi=get(findobj('Tag','fi'),'UserData');
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'rectangular',fc,fi); 
                                case('rectangular3D')
                                    fi=get(findobj('Tag','fi'),'UserData');
                                    eps=get(findobj('Tag','eps'),'UserData');
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'rectangular3D',fc,fi,eps);
                                case('birectangle')
                                    fi=get(findobj('Tag','fi'),'UserData');
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'birectangle',fc,fi);
                                case('octahedron')
                                    eps=get(findobj('Tag','eps'),'UserData');
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'octahedron',fc,eps);
                                case('tetrahedron')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'tetrahedron',fc);
                                case('ITU51')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'ITU51');
                                case('polygon')
                                    [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly',fc);
                                case('polygon3D')
                                    if mod(pocetRep,2)==0
                                        eps=get(findobj('Tag','eps'),'UserData');
                                        [speaker{1:pocetRep}]=dekoder(xW,xX,xY,xZ,'regPoly3D',fc,eps);   
                                    else
                                        ambisonics error
                                        set(findobj('Tag','Terror'),'String','Počet reproduktorů v pravidelném 3D polygonu musí být sudý!!!')
                                        set(findobj('Tag','druh'),'UserData',[])
                                    end     
                            end
                        end
                    norm=max(max(abs(cell2mat(speaker))));
                    for i=1:pocetRep
                        speaker{i}=0.999*(abs(speaker{i})/norm);
                    end  
                    figure (1)
                    if typG==3          %zobrazeni prislusnych zavislosti
                        for k=1:a
                            cislo=cislo+1;
                            tagAX1=['signal',num2str(cislo)];
                            tagPOP1=['speaker',num2str(cislo)];
                            axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.05 pocatek 0.4 (4*c)],...
                                'Tag',tagAX1,'UicontextMenu',findobj('Tag','CM'));
                            uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                                [0.2 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP1,'ForegroundColor','black',...
                                'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                                get(findobj('Tag','outPanel'),'BackgroundColor'));
                            set(findobj('Tag',tagPOP1),'String',popis{cislo})
                            S=speaker{cislo};
                            plot(azim.*(180/pi),S(1,:))
                            set(gca,'Tag',tagAX1)
                            set(gca,'Tag',tagAX1,'YLim',[0 1])
                            set(gca,'Tag',tagAX1,'XLim',[0 360])
                            set(get(gca,'Xlabel'),'String','azimut [°]      \rightarrow')
                            set(get(gca,'Ylabel'),'String','s({\itt})      \rightarrow')
                            if (k~=a) || (pom==0)
                                cislo=cislo+1;
                                tagAX2=['signal',num2str(cislo)];
                                tagPOP2=['speaker',num2str(cislo)];
                                axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.549 pocatek 0.4 (4*c)],...
                                    'Tag',tagAX2,'UicontextMenu',findobj('Tag','CM'));
                                uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                                    [0.699 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP2,'ForegroundColor','black',...
                                    'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                                    get(findobj('Tag','outPanel'),'BackgroundColor'));
                                set(findobj('Tag',tagPOP2),'String',popis{cislo})
                                S=speaker{cislo};
                                plot(azim.*(180/pi),S(1,:))
                                set(gca,'Tag',tagAX2)
                                set(gca,'Tag',tagAX2,'YLim',[0 1])
                                set(gca,'Tag',tagAX1,'XLim',[0 360])
                                set(get(gca,'Xlabel'),'String','azimut [°]      \rightarrow')
                                set(get(gca,'Ylabel'),'String','s({\itt})      \rightarrow')
                            end
                            pocatek=pocatek-b;
                        end    
                    else
                        for k=1:a
                            cislo=cislo+1;
                            tagAX1=['signal',num2str(cislo)];
                            tagPOP1=['speaker',num2str(cislo)];
                            axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.05 pocatek 0.4 (4*c)],...
                                'Tag',tagAX1,'UicontextMenu',findobj('Tag','CM'));
                            uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                                [0.2 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP1,'ForegroundColor','black',...
                                'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                                get(findobj('Tag','outPanel'),'BackgroundColor'));
                            set(findobj('Tag',tagPOP1),'String',popis{cislo})
                            S=speaker{cislo};
                            if typG==1
                                surf(xA,xE,S)
                            elseif typG==2
                                imagesc(azim.*(180/pi),elev.*(180/pi),S)
                            end
                            set(gca,'Tag',tagAX1)
                            set(gca,'Tag',tagAX1,'YLim',[0 360])
                            set(gca,'Tag',tagAX1,'XLim',[0 360])
                            set(get(gca,'Xlabel'),'String','azimut [°]      \rightarrow')
                            set(get(gca,'Ylabel'),'String','\leftarrow      elevace [°]')
                            set(get(gca,'Zlabel'),'String','s({\itt})      \rightarrow')
                            if (k~=a) || (pom==0)
                                cislo=cislo+1;
                                tagAX2=['signal',num2str(cislo)];
                                tagPOP2=['speaker',num2str(cislo)];
                                axes('Parent',findobj('Tag','outPanel'),'Units','Normalized','Position',[0.549 pocatek 0.4 (4*c)],...
                                    'Tag',tagAX2,'UicontextMenu',findobj('Tag','CM'));
                                uicontrol('Parent',findobj('Tag','outPanel'),'Units','Normalized','Style','Text','Position',...
                                    [0.699 pocatek+((4*c)*1.01) 0.09 0.025],'Tag',tagPOP2,'ForegroundColor','black',...
                                    'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                                    get(findobj('Tag','outPanel'),'BackgroundColor'));
                                set(findobj('Tag',tagPOP2),'String',popis{cislo})
                                S=speaker{cislo};
                                if typG==1
                                    surf(xA,xE,S)
                                elseif typG==2
                                    imagesc(azim.*(180/pi),elev.*(180/pi),S)
                                end
                                set(gca,'Tag',tagAX2)
                                set(gca,'Tag',tagAX2,'YLim',[0 360])
                                set(gca,'Tag',tagAX1,'XLim',[0 360])
                                set(get(gca,'Xlabel'),'String','azimut [°]      \rightarrow')
                                set(get(gca,'Ylabel'),'String','\leftarrow      elevace [°]')
                                set(get(gca,'Zlabel'),'String','s({\itt})      \rightarrow')
                            end
                            pocatek=pocatek-b;
                        end  
                    end
                end
                delete (findobj('Tag','Findikator'))
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Nebyly vypočteny žádné výstupní signály určené pro reproduktory')
            end
        case('cilMat')      %ulozeni vystupnich signalu do souboru typu *.mat
            vystupy=get(findobj('Tag','druh'),'UserData');            
            if any(vystupy)==1
                [jmeno,cesta]=uiputfile('*.mat','Uložit data do souboru *.mat');
                if jmeno~=0
                    ambisonics indikator
                    pole=get(findobj('Tag','pocetRepro'),'UserData');
                    switch pole
                        case('mono')
                            M=vystupy;
                            save([cesta,jmeno],'M')
                        case('stereo')
                            L=vystupy(:,1);
                            R=vystupy(:,2);
                            save([cesta,jmeno],'L','R')
                        case('rectangular')
                            LF=vystupy(:,1);
                            RF=vystupy(:,2);
                            LB=vystupy(:,3);
                            RB=vystupy(:,4);
                            save([cesta,jmeno],'LF','RF','LB','RB')
                        case('rectangular3D')
                            LFD=vystupy(:,1);
                            RFD=vystupy(:,2);
                            LBD=vystupy(:,3);
                            RBD=vystupy(:,4);
                            LFU=vystupy(:,5);
                            RFU=vystupy(:,6);
                            LBU=vystupy(:,7);
                            RBU=vystupy(:,8);
                            save([cesta,jmeno],'LFD','RFD','LBD','RBD','LFU','RFU','LBU','RBU')
                        case('birectangle')    
                            LF=vystupy(:,1);
                            RF=vystupy(:,2);
                            LB=vystupy(:,3);
                            RB=vystupy(:,4);
                            LU=vystupy(:,5);
                            RU=vystupy(:,6);
                            LD=vystupy(:,7);
                            RD=vystupy(:,8);
                            save([cesta,jmeno],'LF','RF','LB','RB','LU','RU','LD','RD')
                        case('octahedron') 
                            FU=vystupy(:,1);
                            FD=vystupy(:,2);
                            BU=vystupy(:,3);
                            BD=vystupy(:,4);
                            L=vystupy(:,5);
                            R=vystupy(:,6);
                            save([cesta,jmeno],'FU','FD','BU','BD','L','R')
                        case('tetrahedron')  
                            LFU=vystupy(:,1);
                            RFD=vystupy(:,2);
                            LBD=vystupy(:,3);
                            RBU=vystupy(:,4);
                            save([cesta,jmeno],'LFU','RFD','LBD','RBU')
                        case('ITU51')    
                            L=vystupy(:,1);
                            R=vystupy(:,2);
                            SL=vystupy(:,3);
                            SR=vystupy(:,4);
                            save([cesta,jmeno],'L','R','SL','SR')
                        case('polygon')
                            [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
                            speakerFeeds=cell(1,pocetRep);
                            for i=1:pocetRep
                                speakerFeeds{i}=vystupy(:,i);
                            end
                            save([cesta,jmeno],'speakerFeeds')
                        case('polygon3D')
                            [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
                            speakerFeeds=cell(1,pocetRep);
                            for i=1:pocetRep
                                speakerFeeds{i}=vystupy(:,i);
                            end
                            save([cesta,jmeno],'speakerFeeds')
                    end
                end
                delete (findobj('Tag','Findikator'))
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Nebyly vypočteny žádné výstupní signály určené pro reproduktory')
            end
        case('cilWav')      %ulozeni vystupnich signalu do souboru typu *.wav
            vystupy=get(findobj('Tag','druh'),'UserData');            
            if any(vystupy)==1
                [jmeno,cesta]=uiputfile('*.wav','Uložit data do souborů *.wav');
                if jmeno~=0
                    ambisonics indikator
                    norm=max(max(abs(vystupy)));
                    [pocetVzorku,pocetRep]=size(get(findobj('Tag','druh'),'UserData'));
                    pole=get(findobj('Tag','pocetRepro'),'UserData');
                    switch pole
                        case('mono')
                            umisteni=[cesta,'speaker1','_',jmeno];
                            wavwrite(0.999*(vystupy/norm),fvz,umisteni);
                        case('stereo')
                            L=vystupy(:,1);
                            R=vystupy(:,2);
                            umisteniL=[cesta,'speakerL','_',jmeno];
                            umisteniR=[cesta,'speakerR','_',jmeno];
                            wavwrite(0.999*(L/norm),fvz,umisteniL);
                            wavwrite(0.999*(R/norm),fvz,umisteniR);
                        case('rectangular')
                            LF=vystupy(:,1);
                            RF=vystupy(:,2);
                            LB=vystupy(:,3);
                            RB=vystupy(:,4);
                            umisteniLF=[cesta,'speakerLF','_',jmeno];
                            umisteniLB=[cesta,'speakerLB','_',jmeno];
                            umisteniRB=[cesta,'speakerRB','_',jmeno];
                            umisteniRF=[cesta,'speakerRF','_',jmeno];
                            wavwrite(0.999*(LF/norm),fvz,umisteniLF);                           
                            wavwrite(0.999*(LB/norm),fvz,umisteniLB);        
                            wavwrite(0.999*(RB/norm),fvz,umisteniRB);
                            wavwrite(0.999*(RF/norm),fvz,umisteniRF);           
                        case('rectangular3D')
                            LFD=vystupy(:,1);
                            RFD=vystupy(:,2);
                            LBD=vystupy(:,3);
                            RBD=vystupy(:,4);
                            LFU=vystupy(:,5);
                            RFU=vystupy(:,6);
                            LBU=vystupy(:,7);
                            RBU=vystupy(:,8);
                            umisteniLFD=[cesta,'speakerLFD','_',jmeno];
                            umisteniLBD=[cesta,'speakerLBD','_',jmeno];
                            umisteniRBD=[cesta,'speakerRBD','_',jmeno];
                            umisteniRFD=[cesta,'speakerRFD','_',jmeno];
                            umisteniLFU=[cesta,'speakerLFU','_',jmeno];
                            umisteniLBU=[cesta,'speakerLBU','_',jmeno];
                            umisteniRBU=[cesta,'speakerRBU','_',jmeno];
                            umisteniRFU=[cesta,'speakerRFU','_',jmeno];
                            wavwrite(0.999*(LFD/norm),fvz,umisteniLFD);                           
                            wavwrite(0.999*(LBD/norm),fvz,umisteniLBD);        
                            wavwrite(0.999*(RBD/norm),fvz,umisteniRBD);
                            wavwrite(0.999*(RFD/norm),fvz,umisteniRFD);
                            wavwrite(0.999*(LFU/norm),fvz,umisteniLFU);                           
                            wavwrite(0.999*(LBU/norm),fvz,umisteniLBU);        
                            wavwrite(0.999*(RBU/norm),fvz,umisteniRBU);
                            wavwrite(0.999*(RFU/norm),fvz,umisteniRFU);
                        case('birectangle') 
                            LF=vystupy(:,1);
                            RF=vystupy(:,2);
                            LB=vystupy(:,3);
                            RB=vystupy(:,4);
                            LU=vystupy(:,5);
                            RU=vystupy(:,6);
                            LD=vystupy(:,7);
                            RD=vystupy(:,8);
                            umisteniLF=[cesta,'speakerLF','_',jmeno];
                            umisteniLB=[cesta,'speakerLB','_',jmeno];
                            umisteniRB=[cesta,'speakerRB','_',jmeno];
                            umisteniRF=[cesta,'speakerRF','_',jmeno];
                            umisteniLU=[cesta,'speakerLU','_',jmeno];
                            umisteniLD=[cesta,'speakerLD','_',jmeno];
                            umisteniRD=[cesta,'speakerRD','_',jmeno];
                            umisteniRU=[cesta,'speakerRU','_',jmeno];
                            wavwrite(0.999*(LF/norm),fvz,umisteniLF);                           
                            wavwrite(0.999*(LB/norm),fvz,umisteniLB);        
                            wavwrite(0.999*(RB/norm),fvz,umisteniRB);
                            wavwrite(0.999*(RF/norm),fvz,umisteniRF);
                            wavwrite(0.999*(LU/norm),fvz,umisteniLU);                           
                            wavwrite(0.999*(LD/norm),fvz,umisteniLD);        
                            wavwrite(0.999*(RD/norm),fvz,umisteniRD);
                            wavwrite(0.999*(RU/norm),fvz,umisteniRU);
                        case('octahedron')    
                            FU=vystupy(:,1);
                            FD=vystupy(:,2);
                            BU=vystupy(:,3);
                            BD=vystupy(:,4);
                            L=vystupy(:,5);
                            R=vystupy(:,6);
                            umisteniFU=[cesta,'speakerFU','_',jmeno];
                            umisteniFD=[cesta,'speakerFD','_',jmeno];
                            umisteniBU=[cesta,'speakerBU','_',jmeno];
                            umisteniBD=[cesta,'speakerBD','_',jmeno];
                            umisteniL=[cesta,'speakerL','_',jmeno];
                            umisteniR=[cesta,'speakerR','_',jmeno];
                            wavwrite(0.999*(FU/norm),fvz,umisteniFU);                           
                            wavwrite(0.999*(FD/norm),fvz,umisteniFD);        
                            wavwrite(0.999*(BU/norm),fvz,umisteniBU);
                            wavwrite(0.999*(BD/norm),fvz,umisteniBD);
                            wavwrite(0.999*(L/norm),fvz,umisteniL);                           
                            wavwrite(0.999*(R/norm),fvz,umisteniR);
                        case('tetrahedron')  
                            LFU=vystupy(:,1);
                            RFD=vystupy(:,2);
                            LBD=vystupy(:,3);
                            RBU=vystupy(:,4);
                            umisteniLFU=[cesta,'speakerLFU','_',jmeno];
                            umisteniRFD=[cesta,'speakerRFD','_',jmeno];
                            umisteniLBD=[cesta,'speakerLBD','_',jmeno];
                            umisteniRBU=[cesta,'speakerRBU','_',jmeno];
                            wavwrite(0.999*(LFU/norm),fvz,umisteniLFU);                           
                            wavwrite(0.999*(RFD/norm),fvz,umisteniRFD);
                            wavwrite(0.999*(LBD/norm),fvz,umisteniLBD);        
                            wavwrite(0.999*(RBU/norm),fvz,umisteniRBU);
                        case('ITU51')
                            L=vystupy(:,1);
                            R=vystupy(:,2);
                            SL=vystupy(:,3);
                            SR=vystupy(:,4);
                            umisteniL=[cesta,'speakerL','_',jmeno];
                            umisteniR=[cesta,'speakerR','_',jmeno];
                            umisteniSL=[cesta,'speakerSL','_',jmeno];
                            umisteniSR=[cesta,'speakerSR','_',jmeno];
                            wavwrite(0.999*(L/norm),fvz,umisteniL);
                            wavwrite(0.999*(R/norm),fvz,umisteniR);
                            wavwrite(0.999*(SL/norm),fvz,umisteniSL);
                            wavwrite(0.999*(SR/norm),fvz,umisteniSR);
                        case('polygon')
                            for i=1:pocetRep
                                speakerFeed=vystupy(:,i);
                                cislo=num2str(i);
                                umisteni=[cesta,'speaker',cislo,'_',jmeno];
                                wavwrite(0.999*(speakerFeed/norm),fvz,umisteni);
                            end
                        case('polygon3D')
                            for i=1:(pocetRep/2)
                                speakerFeed=vystupy(:,i);
                                cislo=num2str(i);
                                umisteni=[cesta,'Dspeaker',cislo,'_',jmeno];
                                wavwrite(0.999*(speakerFeed/norm),fvz,umisteni);
                            end
                            for i=((pocetRep/2)+1):pocetRep
                                speakerFeed=vystupy(:,i);
                                cislo=num2str(i-(pocetRep/2));
                                umisteni=[cesta,'Uspeaker',cislo,'_',jmeno];
                                wavwrite(0.999*(speakerFeed/norm),fvz,umisteni);
                            end
                    end
                end
                delete (findobj('Tag','Findikator'))
            else
                ambisonics error
                set(findobj('Tag','Terror'),'String','Nebyly vypočteny žádné výstupní signály určené pro reproduktory')
            end
        case('error')       %vytvoreni okna s chybovou zpravou
            Ferror=figure('Units','Normalized','Name','Chyba!!!','Resize','off',...
                    'Position',[0.29 0.4 0.4 0.2],'Tag','Ferror','Color',[0.304 0.402 0.5],'NumberTitle',...
                    'off','MenuBar','none');
            uicontrol('Parent',Ferror,'Units','Normalized','Style','Text','Position',...
                        [0.11 0.4 0.8 0.3],'Tag','Terror','ForegroundColor','white',...
                        'FontWeight','bold','FontSize',11,'FontAngle','oblique','BackgroundColor',...
                        get(Ferror,'Color'));
            OKerror=uicontrol('Parent',Ferror,'Style','Push','Units','Normalized','Position',...
                [0.435 0.1 0.15 0.15],'Tag','OKerror','String','OK',...
                'Callback','ambisonics delete','ForegroundColor','black','BackgroundColor',...
                [0.702 0.78 1],'FontWeight','bold','Fontsize',13);
        case('filtry')      %vytvoreni okna pro zadani parametru shelving filtru
            fc=get(findobj('Tag','filtry'),'UserData');
            if isempty(fc)
                fc=500;
            end
            Filtry=figure('Units','Normalized','Name','Nastavení parametrů shelving filtrů',...
                'Position',[0.29 0.4 0.4 0.2],'Tag','Filtry','Color',[0.204 0.302 0.5],'NumberTitle',...
                'off','MenuBar','none');
            fmezniText=uicontrol('Parent',Filtry,'Style','Text','Units','Normalized','Position',...
                [0.1 0.5 0.3 0.13],'Tag','fmezniText','String','Mezní kmitočet:',...
                'Foregroundcolor','white','BackgroundColor',get(Filtry,'Color'),'Fontsize',12);
            fmezni=uicontrol('Parent',Filtry,'Style','Edit','Units','Normalized','Position',...
                [0.4 0.5 0.13 0.13],'Tag','fmezni','String',fc,...
                'BackgroundColor',[0.6 0.7 0.7],...
                'FontWeight','bold','Fontsize',12,'TooltipString',...
                'Sem zadejte požadovaný mezní kmitočet shelving filtrů');
            fmezniText2=uicontrol('Parent',Filtry,'Style','Text','Units','Normalized','Position',...
                [0.55 0.5 0.05 0.13],'Tag','fmezniText2','String','Hz',...
                'Foregroundcolor','white','BackgroundColor',get(Filtry,'Color'),'Fontsize',12);
            OK=uicontrol('Parent',Filtry,'Style','Push','Units','Normalized','Position',...
                [0.8 0.1 0.15 0.15],'Tag','filtryOK','String','OK',...
                'Callback','ambisonics nactiFiltry','ForegroundColor','black','BackgroundColor',...
                [0.702 0.78 1],'FontWeight','bold','Fontsize',13);
        case('nactiFiltry')     %nacteni novych parametru filtru
            fc=str2double(get(findobj('Tag','fmezni'),'String'));
            set(findobj('Tag','filtry'),'UserData',fc)
            delete (findobj('Tag','Filtry'))
        case('delete') %smazani okna volajiciho tuto funkci
            delete (get(gcbo,'Parent'))
        case('konec')   %funkce pro ukonceni programu a uzavreni vsech jeho oken
            clear all
            delete(gcf)
            close all
    end
end


