function [output] = fit_biexp(data)
% Tato funkce získá hodnoty parametrů pro vstupní data 
% s pomocí proložení bi-exponenciálním modelem
% vstup: data - vstupní data
% výstup: output - matice parametrů po proložení

% 1 - height of exp1
% 2 - center of exp1
% 3 - pokles 1
% 4 - offset
% 5 - height of exp 2
% 6 - pokles 2
% 7 - center of exp2
% 8 - pozice peaku
% 9 - fit quality

%output=zeros(size(data,1),size(data,2),size(data,3),5);
output=zeros(size(data,1),size(data,2),size(data,3),9);

sx=size(data,1);
sy=size(data,2);
sz=size(data,3);

parfor i=1:sx
    temp = zeros(1,size(data,2),size(data,3),9);
    for j=1:sy
        for k=1:sz
            D=squeeze(data(i,j,k,:));
            if(sum(abs(D))~=0)
            pozice = find(double(D)==max(double(D)));
            if pozice<0.9*length(D)
            maximum=(D(pozice));
            maximum=maximum(1);
            options = optimoptions('lsqcurvefit','FunctionTolerance',1e-8,'MaxFunctionEvaluations', 10e2,'MaxIterations',10e2, 'Display', 'off'); 
          [temp(1,j,k,1:7),temp(1,j,k,9)] = lsqcurvefit(@bi_exp,double([maximum, pozice, 10, D(end), maximum, 10, pozice]),pozice:size(D,1),double(D(pozice:end))',[],[],options);
            end
          [temp(1,j,k,8)] = pozice;
            %[output(i,j,k,1:5),output(i,j,k,6)] = lsqcurvefit(@gama_variate,double([maximum, pozice, 1, 10, D(end)]),1:size(D,1),double(D(:))');
%             plot(squeeze(output(i,j,k,:)));
%             
            end
        end       
    end
    output(i,:,:,:) = temp;
end

end







