ComplexMatrixItem Property (IndexCollection, IndexCollection) |
Namespace: Novacta.Analytics
public ComplexMatrix this[ IndexCollection rowIndexes, IndexCollection columnIndexes ] { get; set; }
Exception | Condition |
---|---|
ArgumentNullException | rowIndexes is null. -or- columnIndexes is null. -or- value is null. |
ArgumentOutOfRangeException | rowIndexes contains an index
which is greater than or equal to the number of rows of this instance. -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 Count of rowIndexes. -or- The number of columns in value is not equal to the Count of columnIndexes. |
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.
In the following example, some matrix elements are simultaneously accessed.
using System; using System.Numerics; namespace Novacta.Analytics.CodeExamples { public class ComplexMatrixIndexerExample11 { public void Main() { // Create a matrix. var data = new Complex[8] { new Complex(1, -1), new Complex(5, -5), new Complex(2, -2), new Complex(6, -6), new Complex(3, -3), new Complex(7, -7), new Complex(4, -4), new Complex(8, -8) }; var matrix = ComplexMatrix.Dense(4, 2, 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 some column indexes. var columnIndexes = IndexCollection.Range(0, 1); Console.WriteLine(); Console.WriteLine("Column indexes: {0}", columnIndexes); // Specify the value matrix. var valueData = new Complex[6] { new Complex(20, -20), new Complex(60, -60), new Complex(30, -30), new Complex(70, -70), new Complex(40, -40), new Complex(80, -80) }; var value = ComplexMatrix.Dense(3, 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. ReadOnlyComplexMatrix 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, -1) ( 5, -5) // ( 2, -2) ( 6, -6) // ( 3, -3) ( 7, -7) // ( 4, -4) ( 8, -8) // // // // Row indexes: 1, 2, 3 // // Column indexes: 0, 1 // // Value matrix: // ( 20, -20) ( 60, -60) // ( 30, -30) ( 70, -70) // ( 40, -40) ( 80, -80) // // // // Updated data matrix: // ( 1, -1) ( 5, -5) // ( 20, -20) ( 60, -60) // ( 30, -30) ( 70, -70) // ( 40, -40) ( 80, -80) // // // // Updated matrix entries: // ( 20, -20) ( 60, -60) // ( 30, -30) ( 70, -70) // ( 40, -40) ( 80, -80) //