N
 &5c       sy    d  Z  	 
 k l  k Z  d   Z  e d e d  Z ( e d e d  Z 7 d d  Z F d   Z	 I d   Z
 N d	 d  Z U d d
  Z X d d  Z ^ d   Z a d   Z f d   Z i d   Z m d   Z p d   Z s d   Z w d   Z z d   Z } d   Z  d   Z  e d  Z  d	 d  Z  d   Z  e d  Z  e d  Z d S(   sω  Matlab(tm) compatibility functions.

This will hopefully become a complete set of the basic functions available in
matlab.  The syntax is kept as close to the matlab syntax as possible.  One 
fundamental change is that the first index in matlab varies the fastest (as in 
FORTRAN).  That means that it will usually perform reductions over columns, 
whereas with this object the most natural reductions are over rows.  It's perfectly
possible to make this work the way it does in matlab if that's desired.
c     s      t  i |   Sd S(   s   rand(d1,...,dn, typecode='d') returns a matrix of the given dimensions
	which is initialized to random number in the range [0,1).
	N(   s   RandomArrays   random_samples   args(   s   argss   ./Lib/MLab.pys   rand s   c    sΩ      | t j o  |  } n  t |  t d  j o  | }   |  } n ! | t j o/ " t t t |   t |   i |  } n; $ t |  d | } % t t | t |   i |  } & | Sd S(   s~   eye(N, M=N, k=0, typecode=None) returns a N-by-M matrix where the 
	k-th diagonal is all ones, and everything else is zeros.
	s   ds   typecodeN(   s   Ms   Nones   Ns   types   typecodes   outers   subtracts   aranges   equals   ks   ms   is   range(   s   Ns   Ms   ks   typecodes   ms   is   ./Lib/MLab.pys   eye s    	/%i    c    sΦ   ( ) | t j o ) |  } n * t |  t d  j o + | } , |  } n - | t j o/ . t t t |   t |   i |  } n; 0 t |  d | } 1 t t | t |   i |  } 2 | Sd  S(   Ns   ds   typecode(   s   Ms   Nones   Ns   types   typecodes   outers   subtracts   aranges   greater_equals   ks   ms   i(   s   Ns   Ms   ks   typecodes   ms   is   ./Lib/MLab.pys   tri( s    	/%c    s]  7 8 |  i } 9 t |  d j o¦ : | d t |  } ; | d j o" < |  i t | |  i	   }  n4 = | d j  o# > t | |  i	  i |   }  n ? t
 d d g t | d | |   Sn @ t |  d j ox A t i t | d | d d | |   }  B | d j o B |  |  Sn( C | d j  o C |  | Sn D |  Sn d  S(   Ni   i    s   ki   (   s   vs   shapes   ss   lens   abss   ks   ns   concats   zeross   typecodes   multiplys   eyes   adds   reduce(   s   vs   ks   ss   ns   ./Lib/MLab.pys   diag7 s   "#*-  c    s(   F G |  d  d   d  d  d  f Sd  S(   Ni   (   s   m(   s   ms   ./Lib/MLab.pys   fliplrF s   c    s   I J |  d  d  d  Sd  S(   Ni   (   s   m(   s   ms   ./Lib/MLab.pys   flipudI s   c    sΤ   N O | d } P | d j o P |  Sn¦ Q | d j o/ Q |  i   d  d  d  d  d  d  f Sng R | d j o/ R t |   d  d  d  d  d  d  f Sn( S | d j o S t |  i    Sn d  S(   Ni   i    i   i   i   (   s   ks   ms	   transposes   fliplr(   s   ms   ks   ./Lib/MLab.pys   rot90N s     / / i   c    s;   U V t  |  i d |  i d d | d |  i   |  Sd  S(   Ni    i   s   ks   typecode(   s   tris   ms   shapes   ks   typecode(   s   ms   ks   ./Lib/MLab.pys   trilU s   c    s=   X Y d t  |  i d |  i d | d |  i    |  Sd  S(   Ni   i    (   s   tris   ms   shapes   ks   typecode(   s   ms   ks   ./Lib/MLab.pys   triuX s   c    s   ^ _ t  i |   Sd  S(   N(   s   maximums   reduces   m(   s   ms   ./Lib/MLab.pys   max^ s   c    s   a b t  i |   Sd  S(   N(   s   minimums   reduces   m(   s   ms   ./Lib/MLab.pys   mina s   c    s   f g t  |   t |   Sd  S(   N(   s   maxs   ms   min(   s   ms   ./Lib/MLab.pys   ptpf s   c    s!   i j t  i |   t |   Sd  S(   N(   s   adds   reduces   ms   len(   s   ms   ./Lib/MLab.pys   meani s   c    s    m n t  |  i    i   Sd  S(   N(   s   sorts   ms	   transpose(   s   ms   ./Lib/MLab.pys   msortm s   c    s#   p q t  |   |  i d d Sd  S(   Ni    i   (   s   msorts   ms   shape(   s   ms   ./Lib/MLab.pys   medianp s   c    sM   s t t  |   } u t t i t |  | d    t t |   d  Sd  S(   Ni   i   (   s   means   ms   mus   sqrts   adds   reduces   pows   len(   s   ms   mus   ./Lib/MLab.pys   stds s   c    s   w x t  i |   Sd  S(   N(   s   adds   reduces   m(   s   ms   ./Lib/MLab.pys   sumw s   c    s   z { t  i |   Sd  S(   N(   s   adds
   accumulates   m(   s   ms   ./Lib/MLab.pys   cumsumz s   c    s   } ~ t  i |   Sd  S(   N(   s   multiplys   reduces   m(   s   ms   ./Lib/MLab.pys   prod} s   c    s     t  i |   Sd  S(   N(   s   multiplys
   accumulates   m(   s   ms   ./Lib/MLab.pys   cumprod s   c    s[      | t j o  d } n  t |  }  t | |  d |  d d !d  Sd S(   s:   Integrate f using the trapezoidal rule, where y is f(x).
	i   i    i   N(   s   xs   Nones   ds   diffs   sums   y(   s   ys   xs   ds   ./Lib/MLab.pys   trapz s
    c    sS      | d j o%  t |  d |  d  | d  Sn  |  d |  d  Sd S(   s5   Discrete difference approximation to the derivative
	i   N(   s   ns   diffs   x(   s   xs   ns   ./Lib/MLab.pys   diff s   %c    s     t  i |  |  Sd  S(   N(   s   adds   reduces   xs   y(   s   xs   ys   ./Lib/MLab.pys   dot s   c    sH      t  |  |  }  t |  }  | t t t | |   Sd S(   s   The correlation coefficients
	N(	   s   covs   xs   ys   cs   diags   ds   sqrts   outers   multiply(   s   xs   ys   cs   ds   ./Lib/MLab.pys   corrcoef s   c    s²     | t j o"  t |  | g |  i    }  n  t |   }   d } ‘ x, |  d ‘ r } ’ | t	 t
 | |  } qY W£ | t |   t	 t
 | |  t |   d Sd  S(   Nf0.0i    i   (   s   ys   Nones   arrays   ms   typecodes   means   mus   sum_covs   vs   outers   multiplys   len(   s   ms   ys   mus   sum_covs   vs   ./Lib/MLab.pys   cov s    "	 	N(   s   __doc__s   Numerics   *s   RandomArrays   rands   Nones   eyes   tris   diags   fliplrs   flipuds   rot90s   trils   trius   maxs   mins   ptps   means   msorts   medians   stds   sums   cumsums   prods   cumprods   trapzs   diffs   dots   corrcoefs   cov(    s   ./Lib/MLab.pys   ?	 s6   
	