Click or drag to resize

DoubleMatrixItem Property (String, IndexCollection)

Gets or sets the elements of this instance corresponding to the specified row and column indexes.

Namespace:  Novacta.Analytics
Assembly:  Novacta.Analytics (in Novacta.Analytics.dll) Version: 2.0.0
Syntax
public DoubleMatrix this[
	string rowIndexes,
	IndexCollection columnIndexes
] { get; set; }

Parameters

rowIndexes
Type: SystemString
The zero-based row indexes of the elements to get or set. The value must be ":", which means that all valid row indexes are specified.
columnIndexes
Type: Novacta.AnalyticsIndexCollection
The zero-based column indexes of the elements to get or set.

Property Value

Type: DoubleMatrix
A tabular collection formed by the entries corresponding to the specified row and column indexes.

Implements

IReadOnlyTabularCollectionTValue, TCollectionItemString, IndexCollection
ITabularCollectionTValue, TCollectionItemString, IndexCollection
Exceptions
ExceptionCondition
ArgumentNullExceptionrowIndexes is null.
-or-
columnIndexes is null.
-or-
value is null.
ArgumentOutOfRangeExceptionrowIndexes is not a string reserved for tabular collection sub-referencing.
-or-
columnIndexes contains an index which is greater than or equal to the number of columns of this instance.
ArgumentException The number of rows in value is not equal to the number of rows of this instance.
-or-
The number of columns in value is not equal to the Count of columnIndexes.
Remarks

When setting elements simultaneously, the value must be a tabular collection having a number of rows equal to the number of specified row indexes, and a number of columns equal to the number of specified column indexes.

Examples

In the following example, some matrix elements are simultaneously accessed.

C#
using System;

namespace Novacta.Analytics.CodeExamples
{
    public class MatrixIndexerExample21  
    {
        public void Main()
        {
            // Create a matrix.
            var data = new double[12] {
                1, 5,  9,
                2, 6, 10,
                3, 7, 11,
                4, 8, 12
            };
            var matrix = DoubleMatrix.Dense(4, 3, data, StorageOrder.RowMajor);
            Console.WriteLine("Initial data matrix:");
            Console.WriteLine(matrix);

            // Specify all row indexes.
            var rowIndexes = ":";
            Console.WriteLine();
            Console.WriteLine("Row indexes: from 0 to {0}", matrix.NumberOfRows - 1);

            // Specify some column indexes.
            var columnIndexes = IndexCollection.Sequence(0, 2, 2);
            Console.WriteLine();
            Console.WriteLine("Column indexes: {0}", columnIndexes);

            // Specify the value matrix.
            var valueData = new double[8] {
              -10,  -90,
              -20, -100,
              -30, -110,
              -40, -120
            };
            var value = DoubleMatrix.Dense(4, 2, valueData, StorageOrder.RowMajor);
            Console.WriteLine();
            Console.WriteLine("Value matrix:");
            Console.WriteLine(value);

            // Set the entries having the specified indexes to the value matrix.
            matrix[rowIndexes, columnIndexes] = value;

            Console.WriteLine();
            Console.WriteLine("Updated data matrix:");
            Console.WriteLine(matrix);

            // Entries can also be accessed using a read-only wrapper 
            // of the matrix.
            ReadOnlyDoubleMatrix readOnlyMatrix = matrix.AsReadOnly();

            Console.WriteLine();
            Console.WriteLine("Updated matrix entries:");
            Console.WriteLine(readOnlyMatrix[rowIndexes, columnIndexes]);
        }
    }
}

// Executing method Main() produces the following output:
// 
// Initial data matrix:
// 1                5                9                
// 2                6                10               
// 3                7                11               
// 4                8                12               
// 
// 
// 
// Row indexes: from 0 to 3
// 
// Column indexes: 0, 2
// 
// Value matrix:
// -10              -90              
// -20              -100             
// -30              -110             
// -40              -120             
// 
// 
// 
// Updated data matrix:
// -10              5                -90              
// -20              6                -100             
// -30              7                -110             
// -40              8                -120             
// 
// 
// 
// Updated matrix entries:
// -10              -90              
// -20              -100             
// -30              -110             
// -40              -120             
// 

See Also