unit StatUnit;

interface

uses TypesUnit;

function Mean(PixDir: TByteArray; ParLengs: TFloatArray; Leng: Double): Double;
function Variance(PixDir: TByteArray; ParLengs: TFloatArray; Leng: Double): Double;

implementation

function Mean(PixDir: TByteArray; ParLengs: TFloatArray; Leng: Double): Double;
{Střední hodnota, vstupem je vektor hodnot po částech konstantní funkce, vektor
délek jednotlivých konstantních částí této funkce a celková délka těchto částí,
výstupem je střední hodnota}
var i :Integer;
begin
  Result:=0;
  for i:=0 to High(PixDir) do
    Result:=Result+PixDir[i]*ParLengs[i];
  Result:=Result/Leng;
end;

function Variance(PixDir: TByteArray; ParLengs: TFloatArray; Leng: Double): Double;
{Rozptyl, vstupem je vektor hodnot po částech konstantní funkce, vektor délek
jednotlivých konstantních částí této funkce a celková délka těchto částí,
výstupem je rozptyl}
var i: Integer;
    M: Double;
begin
  M:=Mean(PixDir, ParLengs, Leng);
  Result:=0;
  for i:=0 to High(PixDir) do
    Result:=Result+(PixDir[i]-M)*(PixDir[i]-M)*ParLengs[i];
  Result:=Result/Leng;
end;

end.
