Ejemplo n.º 1
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, double rowIndex, double columnIndex, double sliceIndex, TScalar value)
        {
            var index = LinearizeIndex(array.shape, ToInt(rowIndex), ToInt(columnIndex), ToInt(sliceIndex));

            array[index - 1] = value;
        }
Ejemplo n.º 2
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, double rowIndex, double columnIndex, TScalar value)
        {
            // Performance critical method!
            Contract.Requires(array != null);

            int rowIndexInt = ToInt(rowIndex);

            if (rowIndexInt < 1)
            {
                throw new ArgumentOutOfRangeException("rowIndex");
            }

            int rowCount = array.shape.RowCount;

            int columnIndexInt = ToInt(columnIndex);

            if (rowIndexInt > rowCount || columnIndexInt > array.shape.ColumnCount)
            {
                if (array.shape.IsHigherDimensional)
                {
                    throw new ArgumentOutOfRangeException();
                }
                if (rowIndexInt > rowCount)
                {
                    rowCount = rowIndexInt;
                }
                int columnCount = Math.Max(array.shape.ColumnCount, columnIndexInt);
                array.Resize(new MArrayShape(rowCount, columnCount));
            }

            array.elements[(columnIndexInt - 1) * rowCount + (rowIndexInt - 1)] = value;
        }
Ejemplo n.º 3
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, int rowIndex, int columnIndex, TScalar value)
        {
            // Performance critical method!
            Contract.Requires(array != null);

            if (rowIndex < 1)
            {
                throw new ArgumentOutOfRangeException("rowIndex");
            }
            if (columnIndex < 1)
            {
                throw new ArgumentOutOfRangeException("columnIndex");
            }

            int rowCount = array.shape.RowCount;

            if (rowIndex > array.RowCount || columnIndex > array.ColumnCount)
            {
                // Array needs resizing
                // TODO: zeros(2, 2, 2) (3, 3) = 5 should work and produce a 3x2x2 matrix
                if (array.IsHigherDimensional)
                {
                    throw new ArgumentOutOfRangeException();
                }
                if (rowIndex > rowCount)
                {
                    rowCount = rowIndex;
                }
                int columnCount = Math.Max(array.shape.ColumnCount, columnIndex);
                array.Resize(new MArrayShape(rowCount, columnCount));
            }

            array.elements[(columnIndex - 1) * rowCount + (rowIndex - 1)] = value;
        }
Ejemplo n.º 4
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, int index, TScalar value)
        {
            Contract.Requires(array != null);

            if (index < 1)
            {
                throw new ArgumentOutOfRangeException("index");
            }
            if (index > array.Count)
            {
                // Must resize, only works if the array is empty, a scalar or a vector
                // - Empty, scalar or row vector: grows in columns
                // - Column vector: grows in rows
                // - Otherwise: throws
                if (array.IsHigherDimensional)
                {
                    throw new ArgumentOutOfRangeException("index");
                }
                else if (array.RowCount <= 1)
                {
                    array.Resize(new MArrayShape(1, index));
                }
                else if (array.ColumnCount == 1)
                {
                    array.Resize(new MArrayShape(index, 1));
                }
                else
                {
                    throw new ArgumentOutOfRangeException("index");
                }
            }

            array[index - 1] = value;
        }
Ejemplo n.º 5
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, TScalar value)
        {
            Contract.Requires(array != null);
            int count = array.Count;

            for (int i = 0; i < count; ++i)
            {
                array[i] = value;
            }
        }
Ejemplo n.º 6
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, MFullArray <double> indices, TScalar value)
        {
            Contract.Requires(array != null);
            Contract.Requires(indices != null);

            var indicesShape = indices.shape;

            if (!indicesShape.IsVector)
            {
                throw MArrayShapeException.CreateFormatted("Array index must be a vector but has shape {0}.", indicesShape);
            }

            int indexCount = indices.Count;

            for (int i = 0; i < indexCount; i++)
            {
                array[ToInt(indices[i]) - 1] = value;
            }
        }
Ejemplo n.º 7
0
 public static void ArraySet <[AnyPrimitive] TScalar>(
     MFullArray <TScalar> array, double index, TScalar value)
 {
     Contract.Requires(array != null);
     ArraySet(array, ToInt(index), value);
 }
Ejemplo n.º 8
0
        public static MFullArray <TScalar> Expand <[AnyPrimitive] TScalar>(TScalar value, double rowCount, double columnCount)
        {
            var shape = MArrayShape.FromDoubles(rowCount, columnCount);

            return(MFullArray <TScalar> .ExpandScalar(value, shape));
        }
Ejemplo n.º 9
0
 public static MFullArray <TScalar> vertcat <[AnyPrimitive] TScalar>(
     TScalar value1, TScalar value2, TScalar value3, TScalar value4, TScalar value5)
 {
     return(MFullArray <TScalar> .CreateColumnVector(value1, value2, value3, value4, value5));
 }
Ejemplo n.º 10
0
 public static MFullArray <TScalar> horzcat <[AnyPrimitive] TScalar>(
     TScalar value1, TScalar value2, TScalar value3, TScalar value4)
 {
     return(MFullArray <TScalar> .CreateRowVector(value1, value2, value3, value4));
 }
Ejemplo n.º 11
0
 public static TScalar uplus <[AnyNumeric] TScalar>(TScalar value)
 {
     return(value);
 }
Ejemplo n.º 12
0
 internal static TScalar transpose <[AnyPrimitive] TScalar>(TScalar value)
 {
     return(value);
 }