示例#1
0
文件: Matrix.cs 项目: burnedram/ann
        public Matrix <TVal> SetDiagonal(TVal val)
        {
            Matrix <TVal> A = this;

            using (var inplace = new InPlaceGuard(A))
            {
                Matrix <TVal> B = inplace.Matrix;

                for (int i = 0; i < Math.Min(A.Rows, A.Cols); i++)
                {
                    B[i, i] = val;
                }

                return(B);
            }
        }
示例#2
0
文件: Matrix.cs 项目: burnedram/ann
        public Matrix <TVal> BinaryOp(TVal val, Func <TVal, TVal, TVal> op)
        {
            Matrix <TVal> A = this;

            using (var inplace = new InPlaceGuard(A))
            {
                Matrix <TVal> B = inplace.Matrix;

                for (int i = 0; i < A.Rows; i++)
                {
                    for (int j = 0; j < A.Cols; j++)
                    {
                        B[i, j] = op(A[i, j], val);
                    }
                }

                return(B);
            }
        }
示例#3
0
文件: Matrix.cs 项目: burnedram/ann
        public Matrix <TVal> SetEach(Func <int, int, TVal> op)
        {
            Matrix <TVal> A = this;

            using (var inplace = new InPlaceGuard(A))
            {
                Matrix <TVal> B = inplace.Matrix;

                for (int i = 0; i < A.Rows; i++)
                {
                    for (int j = 0; j < A.Cols; j++)
                    {
                        B[i, j] = op(i, j);
                    }
                }

                return(B);
            }
        }
示例#4
0
文件: Matrix.cs 项目: burnedram/ann
        public Matrix <TVal> BinaryOp(Matrix <TVal> B, Func <TVal, TVal, TVal> op)
        {
            Matrix <TVal> A = this;

            if (A.Cols != B.Cols || A.Rows != B.Rows)
            {
                throw new InvalidOperationException("dimensions does not agree");
            }
            using (var inplace = new InPlaceGuard(A))
            {
                Matrix <TVal> C = inplace.Matrix;

                for (int i = 0; i < A.Rows; i++)
                {
                    for (int j = 0; j < A.Cols; j++)
                    {
                        C[i, j] = op(A[i, j], B[i, j]);
                    }
                }

                return(C);
            }
        }