class:
        /**
        * A collection of 2D matrix functions for AS3.  
        **/
        public dynamic class Matrix2D extends Array
        {
                public function Matrix2D(nRows:int=0,nCols:int=0)
                {
                        for (var k:int=0;k<nRows;k++)
                        {
                                this[k]=new Array(nCols);
                        }
                }

                /**
                * Returns a square [n][n] matrix with all the elements set to 
zero.
                *
                * @param n Matrix length.
                *
                * @see #Identity()
                **/ 
                public dynamic function Zero(n:int=0):Matrix2D
                {
                        var a:Matrix2D=new Matrix2D(n,n);
                        for (var i:int=0;i<n;i++)
                        {
                                for (var j:int=0;j<n;j++)
                                {
                                        a[i][j]=0.;
                                }
                        }
                        return (a);
                }
                
                /**
                * Returns an identity matrix [n][n] with the diagonal elements 
set to one.
                *
                * @param n Matrix length. 
                *
                * @see #Zero()
                **/ 
                public dynamic function Identity(n:int=0):Matrix2D
                {
                        var a:Matrix2D=new Matrix2D(n,n);
                        for (var i:int=0;i<n;i++)
                        {
                                for (var j:int=0;j<n;j++)
                                {
                                        if (i==j)
                                        {
                                                a[i][j]=1.;     
                                        }
                                        else
                                        {
                                                a[i][j]=0.;
                                        }
                                }
                        }
                        return (a);
                }

}

test:

                        import com.freevryheid.statistics.Matrix2D;
                        private function init():void
                        {
                                var b:Matrix2D=new Matrix2D();
                                trace(b.Identity(3)) 
                        }

outputs: 1,0,0,0,1,0,0,0,1


Reply via email to