Click or drag to resize

DoubleMatrixItem Property (IndexCollection, String)

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[
	IndexCollection rowIndexes,
	string columnIndexes
] { get; set; }

Parameters

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

Property Value

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

Implements

IReadOnlyTabularCollectionTValue, TCollectionItemIndexCollection, String
ITabularCollectionTValue, TCollectionItemIndexCollection, String
Exceptions
ExceptionCondition
ArgumentNullExceptionrowIndexes is null.
-or-
columnIndexes is null.
-or-
value is null.
ArgumentOutOfRangeExceptionrowIndexes contains an index which is greater than or equal to the number of rows of this instance.
-or-
columnIndexes is not a string reserved for tabular collection sub-referencing.
ArgumentException The number of rows in value is not equal to the Count of rowIndexes.
-or-
The number of columns in value is not equal to the number of columns of this instance.
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 MatrixIndexerExample12  
    {
        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 some row indexes.
            var rowIndexes = IndexCollection.Range(1, 3);
            Console.WriteLine();
            Console.WriteLine("Row indexes: {0}", rowIndexes);

            // Specify all column indexes.
            var columnIndexes = ":";
            Console.WriteLine();
            Console.WriteLine("Column indexes: from 0 to {0}", matrix.NumberOfColumns - 1);

            // Specify the value matrix.
            var valueData = new double[9] {
              -20, -60, -100,
              -30, -70, -110,
              -40, -80, -120
            };
            var value = DoubleMatrix.Dense(3, 3, 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: 1, 2, 3
// 
// Column indexes: from 0 to 2
// 
// Value matrix:
// -20              -60              -100             
// -30              -70              -110             
// -40              -80              -120             
// 
// 
// 
// Updated data matrix:
// 1                5                9                
// -20              -60              -100             
// -30              -70              -110             
// -40              -80              -120             
// 
// 
// 
// Updated matrix entries:
// -20              -60              -100             
// -30              -70              -110             
// -40              -80              -120             
// 

See Also