% *****************************************************************
% Chaoticka mapa
% Stagl Lubos
%
% s(1) = pocatecni podminka meli oni nechame stejnou
% R = chaoticke chovani co nejvetsi rozkmit hodnot v intervalu <0,1> 
% *****************************************************************

function [s]=chaoticka_mapa(x,R,N)

% definice velikosti vektoru pro chaotickou mapu
s = zeros(1,N);

s(1) = x;

% vypocet podle vzorce
for cnt= 2:N
  s(cnt) = R*s(cnt-1)*(1-s(cnt-1));
end;

s = ceil(s.*N);              % zisk opakujici se posloupnosti zaokr. k nekonecnu

% figure(255);
% plot(s);    


% ******************************************************************
% pokud se vyskytuje nektere cislo vicekrat dame 0

cnt=1;

for i=1:N
    nalez = find(s==i);                     % fce pro nalezeni prvku ve vektoru
    if isempty(nalez)                        % pokud nebyl nalezen prvek
        chybejici(cnt)=i;                    % ulozim cislo ktere chybi
        cnt=cnt+1;
    else
        for j=2:size(nalez,2)                % budeme pocitat od druheho prvku
            s(nalez(j)) = 0;                 % dame nuly na mista ktera se opakuji
        end
    end     
end

% ******************************************************************
% nahrada opakujicich se prvku neopakujicimi

nula = find(s==0);                              % fce pro nalezeni 0 prvků ve vektoru

for j=1:size(nula,2)                            % budeme pocitat od prvniho prvku
     s(nula(j)) = chybejici(j);                 % chybej. hodnoty na mista ktera byla 0
end

end