%--------------------------------------------------------------------------
% 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)
%--------------------------------------------------------------------------

function SF = GetFrequencyFromDiagram(CUroven)
global mws S f

%Ziskani dat z programu CST bod po bodu

res1D  = mws.invoke('Result1D','a1(1)1(1)');
nf     = res1D.invoke('GetN');

for i=1:nf
	% vypis do COMMAND WINDOW pocet generaci
    	if round(i/100) == (i/100)
        	disp(sprintf('Ziskan bod = %i -> %i',i, nf));
   	 end
	f(1,i) = res1D.invoke('GetX', i-1);
	S(i,1) = res1D.invoke('GetY', i-1);
end

% Ziskani nastavenych jednotek
unit = mws.invoke('Units');
FrUnit = unit.invoke('GetFrequencyUnitToSI');
f=f*FrUnit;

SFDBmin = -5;
SirVz = (f(1,nf)-f(1,1))/nf;


DBU = 20*log10(CUroven);
SDBU = 20*log10(abs(S));
    
    for i = 1:length(S)
        if ((SDBU(i,1)) > (DBU))
            S(i,1) = 1;
        end
    end

    j=1;
    count = 0;
    SFDB(1,1:3) = ones(1,3);
    SF(1,1:5) = ones(1,5);
    
    for i = 1:length(S)
        if (SDBU(i,1) < DBU)
            clear SF;
            count = count + 1;
            SFDB(j,3) = count;
            if SDBU(i,1) < SFDBmin
                SFDB(j,1) = SDBU(i,1);
                SFDBmin = SFDB(j,1);
                SFDB(j,2) = f(1,i);
            end
        else
            count = 0;
            SFDBmin = DBU + 1;
            j = j +1;
        end 
    end

    j=1;
    [m,n]=size(SFDB);
    for i=1:m
        if (SFDB(i,1) < 0)
            SF(j,2)=SFDB(i,1);
            SF(j,1)=SFDB(i,2);
            SF(j,3)=SFDB(i,3);
            SF(j,4)=SF(j,3)*SirVz;
            SF(j,5)=(SF(j,4))/(SF(j,1));
            j=j+1;
        end
    end
    
end