%--------------------------------------------------------------------------
% function SF = GetFrequencyFromDiagram(CUroven,CFile)
%
% Popis funkce:
% ------------
% Funkce je potrebna ke ziskani parametru (S11 a frekvence) z vysledneho
% grafu, ktery byl vyexportovan z CST.
%
% Parametry
% ------------
% CUroven - rozsah hodnot od 1 do 0 (hodnota 1 uz je bez rozliseni!)
% CFile - Exportovany soubor 'C:/Temp/tempDataExportHFSS.m'
%
%
% Priklad pouziti funkce:
% ---------
% fid = fopen('pokus.m', 'wt');
% ... 
% function SF = GetFrequencyFromDiagram(0.5,'C:/Temp/tempDataExportCST.txt')
%--------------------------------------------------------------------------

function SF = GetFrequencyFromDiagram(CUroven,CFile)
global mws 

CUroven = 0.5;

Res1D_s11  = invoke(mws, 'Result1D','a1(1)1(1)');
nf     = invoke(Res1D_s11, 'GetN');
s11    = zeros(nf,2);
for i=1:nf
    i
	f(1,i) = invoke(Res1D_s11, 'GetX', i-1);
	S(i,1) = invoke(Res1D_s11, 'GetY', i-1);
end

DBU = 20*log10(CUroven);
    [m,n] = size(S);
    Poc_vz = m;
    for i = 1:m
        if ((DBU) < (20*log10(S(i,1))))
            S(i,1) = 1;
        end
    end

    SDBU = 20*log10(S);
    j=1;
    count = 0;
    for i = 1:m
        if (SDBU(i,1) < DBU)
            count = count + 1;
            SFDB(j,3) = count;
            if SDBU(i-1,1)>SDBU(i,1)
                SFDB(j,1) = SDBU(i,1);
                SFDB(j,2) = f(1,i);
            end
        else
            count = 0;
            j = j +1;
        end 
    end
    [m,n]=size(SFDB);
    j=1;
    for i=1:m
        if (SFDB(i,1) < 0)
            SF(j,1)=SFDB(i,1);
            SF(j,2)=SFDB(i,2);
            SF(j,3)=SFDB(i,3);
            j=j+1;
        end
    end
    [m,n]=size(SF);
    
    if ((m<1)||(n<1))
        SF = ones(1,3);
        disp('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
        disp('Antena nema v pozadovanem pasmu zadne reseni...');
        disp('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
    else
        SF(:,3)=(SF(:,3)*10);
        for i=1:m
            if (SF(i,3)> Poc_vz)
                disp(i);
                disp('Antena se zda byt sirokopasmova...');
                disp('nebo je nespravne nastavena uroven odecitani...');
                disp('pravdepodobne muzou byt i dve blizke frekvence!');
                disp('zobrazena hodnota je minimalni hodnota v danem intervalu s natavenou urovni!');
            else
                disp(i);
                disp('Antena se zda byt pasmova nebo vicepasmova');
            end
        end
        SF(:,3)=(SF(:,3)/10);
    end
end