yorick banner

Home

Manual

Packages

Global Index

Keywords

Quick Reference


func countincell1d (xx,L=,nl=,nn=)
/* DOCUMENT 2D countincell1d(xx,L)
 EXAMPLE
   uu=[];for(i=1;i<=35;i++){xx=random(80);u=countincell1d(xx,L=1,nn=30,nl=50); grow,uu,[u];}
   plb,uu(,::5,avg),indgen(0:29),(1./indgen(50))(::5),width=4
*/
{
  res=[];
  if (is_void(nn)) nn=1+numberof(xx);
  if (is_void(nl)) nl=15;
  if (is_void(L)) L=1.;
  for(i=1;i<=nl;i++)
    {
      rg=indgen(0:i)*double(L)/i;
      u=histo1d(xx,rg);
      //           error,"ah";
      grow,res, [histo1d(u(*),indgen(0:nn))];
    }
  res=double(res);
  norm=res(sum,); w= where(!norm); if(numberof(w)) norm(w)=1;
  return res/norm(-,);
}


func countincell2d (xx,L=,nl=,nn=)
/* DOCUMENT 2D countincell2d(xx,L)
   EXAMPLE
   uu=[];for(i=1;i<=15;i++){xx=random(8000,2);u=countincell2d(xx,L=1,nn=30,nl=50); grow,uu,[u];} pli,uu(,,avg)
 */
{
    res=[];
  if (is_void(nn)) nn=1+numberof(xx);
  if (is_void(nl)) nl=15;
  if (is_void(L)) L=1.;
  for(i=1;i<=nl;i++)
    {
      rg=indgen(0:i)*double(L)/i;
      u=histo2d(xx,rg,rg);
      //      error,"ah";
      grow,res, [histo1d(u(*),indgen(0:nn))];
    }
  res=double(res);
  return res/res(sum,)(-,);
}



func countincell3d (xx,L=,nl=,nn=)
/* DOCUMENT 3D countincell
   EXAMPLE   uu=[];for(i=1;i<=15;i++){xx=random(8000,3);u=countincell3d(xx,L=1,nn=30,nl=50); grow,uu,[u];} pli,uu(,,avg)
 */
{
    res=[];
  if (is_void(nn)) nn=1+numberof(xx);
  if (is_void(nl)) nl=15;
  if (is_void(L)) L=1.;
  for(i=1;i<=nl;i++)
    {
      rg=indgen(0:i)*double(L)/i;
      u=histo3d(xx,rg,rg,rg);
      //      error,"ah";
      grow,res, [histo1d(u(*),indgen(0:nn))];
    }
  res=double(res);
  return res/res(sum,)(-,);
}



func binomialPDF (x,p,n)
/* DOCUMENT 
     PDF of binomial ditribution
   SEE ALSO:
 */
{
if(numberof(x)>1)
  {
    qq=[];
    for(i=1;i<=numberof(x);i++)
      grow,qq,binomialPDF(x(i),p,n);
    return qq;
  }

  return bico(n,x)* p^x*(1-p)^(n-x);

}

func binomialCDF (x,p,n)
/* DOCUMENT 
     CDF of binomial ditribution
   SEE ALSO:
 */
{
  return binomialPDF(indgen(0:x),p,n)(sum);
}


func binomialMoments (q,p,n)
/* DOCUMENT 
     Moments of binomial ditribution
   SEE ALSO:
 */
{
  if(numberof(q)>1)
  {
    qq=[];
    for(i=1;i<=numberof(q);i++)
      grow,qq,binomialMoments(q(i),p,n);
    return qq;
  }
  qq=1;
  for(i=0;i<=q-1;i++) qq *= p*(n-i);
  return qq;
}




func count2moment (counts,&err,k=,error=)
/* DOCUMENT
   returns the normalized factorial moments
   F_k= < N(N-1)..(N-k+1) >/< N(N-1)..(N-k+1) >_binomial
   note that the first element corresponds to the void 
   EXAMPLE
   uu=[];for(i=1;i<=1000;i++){xx=random(30);u=countincell1d(xx,L=1,nn=30,nl=25); grow,uu,[u];}
   tt=count2moment(uu,er,k=4,error=1);
   plb,tt(2:20,2:4)-1,marker=1,width=4;
   plb,(tt+er/sqrt(1000))(2:20,2:4)-1,type=2
   plb,(tt-er/sqrt(1000))(2:20,2:4)-1,type=3
   SEE ALSO:
 */
{
 
  if(is_void(k)) k=1;
  d=dimsof(counts);
  if(d(1)==2) { counts=[counts];   d=dimsof(counts);}
  p=d(0);
  n=d(2)-1;
  nl=d(3);
  res=[];
  if(error) err=[];
  vec=indgen(0:n);
  for(i=0;i<=k;i++)
    {
      grow,res,[(counts*vec(,-,-))(sum,,avg)];
       if(error) grow,err,[(counts*vec(,-,-))(sum,,rms)];
      vec *= max(0,indgen(0:n)-i-1);
    }
  res=double(res);
  for(i=1;i<=nl;i++)
    {
      tt=binomialMoments(indgen(k+1),1./i,n);
      w=where(tt==0); if(numberof(w)) tt(w)=1;
      res(i,) /= tt;
       if(error) err(i,) /= tt;
    }
  
  return res;
}


/* pp=1000;nn=15;
x=random(pp);y=random(pp); z=random(pp)
u=histo2d([x,y],span(0,1,nn),span(0,1,nn));
pli,u
*/