Browse Source

vector: changed row and column enumerator to return tuples as well

la-knuth
Marcus Cuda 16 years ago
parent
commit
be231a8d45
  1. 4
      src/Examples/LinearAlgebra/MatrixDataAccessor.cs
  2. 8
      src/Examples/LinearAlgebra/MatrixNorms.cs
  3. 24
      src/Numerics/LinearAlgebra/Generic/Matrix.cs
  4. 28
      src/Numerics/LinearAlgebra/IO/MatlabWriter.cs
  5. 4
      src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
  6. 4
      src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
  7. 4
      src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs
  8. 4
      src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs

4
src/Examples/LinearAlgebra/MatrixDataAccessor.cs

@ -139,7 +139,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"9. Get columns using column enumerator");
foreach (var keyValuePair in matrix.ColumnEnumerator(2, 4))
{
Console.WriteLine(@"Column {0}: {1}", keyValuePair.Key, keyValuePair.Value.ToString("#0.00\t", formatProvider));
Console.WriteLine(@"Column {0}: {1}", keyValuePair.Item1, keyValuePair.Item2.ToString("#0.00\t", formatProvider));
}
Console.WriteLine();
@ -148,7 +148,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"10. Get rows using row enumerator");
foreach (var keyValuePair in matrix.RowEnumerator(4, 3))
{
Console.WriteLine(@"Row {0}: {1}", keyValuePair.Key, keyValuePair.Value.ToString("#0.00\t", formatProvider));
Console.WriteLine(@"Row {0}: {1}", keyValuePair.Item1, keyValuePair.Item2.ToString("#0.00\t", formatProvider));
}
Console.WriteLine();

8
src/Examples/LinearAlgebra/MatrixNorms.cs

@ -97,7 +97,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"5. Normalize matrix columns: before normalize");
foreach (var keyValuePair in matrix.ColumnEnumerator())
{
Console.WriteLine(@"Column {0} 2-nd norm is: {1}", keyValuePair.Key, keyValuePair.Value.Norm(2));
Console.WriteLine(@"Column {0} 2-nd norm is: {1}", keyValuePair.Item1, keyValuePair.Item2.Norm(2));
}
Console.WriteLine();
@ -105,7 +105,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"5. Normalize matrix columns: after normalize");
foreach (var keyValuePair in normalized.ColumnEnumerator())
{
Console.WriteLine(@"Column {0} 2-nd norm is: {1}", keyValuePair.Key, keyValuePair.Value.Norm(2));
Console.WriteLine(@"Column {0} 2-nd norm is: {1}", keyValuePair.Item1, keyValuePair.Item2.Norm(2));
}
Console.WriteLine();
@ -114,7 +114,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"6. Normalize matrix rows: before normalize");
foreach (var keyValuePair in matrix.RowEnumerator())
{
Console.WriteLine(@"Row {0} 2-nd norm is: {1}", keyValuePair.Key, keyValuePair.Value.Norm(2));
Console.WriteLine(@"Row {0} 2-nd norm is: {1}", keyValuePair.Item1, keyValuePair.Item2.Norm(2));
}
Console.WriteLine();
@ -122,7 +122,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"6. Normalize matrix rows: after normalize");
foreach (var keyValuePair in normalized.RowEnumerator())
{
Console.WriteLine(@"Row {0} 2-nd norm is: {1}", keyValuePair.Key, keyValuePair.Value.Norm(2));
Console.WriteLine(@"Row {0} 2-nd norm is: {1}", keyValuePair.Item1, keyValuePair.Item2.Norm(2));
}
}
}

24
src/Numerics/LinearAlgebra/Generic/Matrix.cs

@ -637,11 +637,11 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// </summary>
/// <returns>An <see cref="IEnumerator{T}"/> that enumerates over the matrix columns</returns>
/// <seealso cref="IEnumerator{T}"/>
public virtual IEnumerable<KeyValuePair<int, Vector<T>>> ColumnEnumerator()
public virtual IEnumerable<Tuple<int, Vector<T>>> ColumnEnumerator()
{
for (var i = 0; i < ColumnCount; i++)
{
yield return new KeyValuePair<int, Vector<T>>(i, Column(i));
yield return new Tuple<int, Vector<T>>(i, Column(i));
}
}
@ -658,7 +658,7 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// <item><c>(index + length) &gt;= Columns.</c></item></list>
/// </exception>
/// <exception cref="ArgumentException">If <paramref name="length"/> is not positive.</exception>
public virtual IEnumerable<KeyValuePair<int, Vector<T>>> ColumnEnumerator(int index, int length)
public virtual IEnumerable<Tuple<int, Vector<T>>> ColumnEnumerator(int index, int length)
{
if (index >= ColumnCount || index < 0)
{
@ -678,7 +678,7 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
var maxIndex = index + length;
for (var i = index; i < maxIndex; i++)
{
yield return new KeyValuePair<int, Vector<T>>(i, Column(i));
yield return new Tuple<int, Vector<T>>(i, Column(i));
}
}
@ -694,7 +694,7 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// or greater than or equal to the number of rows.</item>
/// <item><c>(index + length) &gt;= Rows.</c></item></list></exception>
/// <exception cref="ArgumentException">If <paramref name="length"/> is not positive.</exception>
public virtual IEnumerable<KeyValuePair<int, Vector<T>>> RowEnumerator(int index, int length)
public virtual IEnumerable<Tuple<int, Vector<T>>> RowEnumerator(int index, int length)
{
if (index >= RowCount || index < 0)
{
@ -714,7 +714,7 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
var maxi = index + length;
for (var i = index; i < maxi; i++)
{
yield return new KeyValuePair<int, Vector<T>>(i, Row(i));
yield return new Tuple<int, Vector<T>>(i, Row(i));
}
}
@ -723,11 +723,11 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// </summary>
/// <returns>An <see cref="IEnumerator{T}"/> that enumerates over the matrix rows</returns>
/// <seealso cref="IEnumerator{T}"/>
public virtual IEnumerable<KeyValuePair<int, Vector<T>>> RowEnumerator()
public virtual IEnumerable<Tuple<int, Vector<T>>> RowEnumerator()
{
for (var i = 0; i < RowCount; i++)
{
yield return new KeyValuePair<int, Vector<T>>(i, Row(i));
yield return new Tuple<int, Vector<T>>(i, Row(i));
}
}
@ -1250,8 +1250,8 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
var ret = new T[RowCount * ColumnCount];
foreach (var column in ColumnEnumerator())
{
var columnIndex = column.Key * RowCount;
foreach (var element in column.Value.GetIndexedEnumerator())
var columnIndex = column.Item1 * RowCount;
foreach (var element in column.Item2.GetIndexedEnumerator())
{
ret[columnIndex + element.Item1] = element.Item2;
}
@ -1275,8 +1275,8 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
foreach (var row in RowEnumerator())
{
var rowIndex = row.Key * ColumnCount;
foreach (var element in row.Value.GetIndexedEnumerator())
var rowIndex = row.Item1 * ColumnCount;
foreach (var element in row.Item2.GetIndexedEnumerator())
{
ret[rowIndex + element.Item1] = element.Item2;
}

28
src/Numerics/LinearAlgebra/IO/MatlabWriter.cs

@ -481,7 +481,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item1);
}
@ -500,7 +500,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
int count = 0;
foreach (var column in matrix.ColumnEnumerator())
{
count += ((Double.SparseVector)column.Value).NonZerosCount;
count += ((Double.SparseVector)column.Item2).NonZerosCount;
dataWriter.Write(count);
}
@ -516,7 +516,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item2);
}
@ -549,7 +549,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item1);
}
@ -568,7 +568,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
int count = 0;
foreach (var column in matrix.ColumnEnumerator())
{
count += ((Single.SparseVector)column.Value).NonZerosCount;
count += ((Single.SparseVector)column.Item2).NonZerosCount;
dataWriter.Write(count);
}
@ -584,7 +584,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item2);
}
@ -620,7 +620,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item1);
}
@ -639,7 +639,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
int count = 0;
foreach (var column in matrix.ColumnEnumerator())
{
count += ((Complex.SparseVector)column.Value).NonZerosCount;
count += ((Complex.SparseVector)column.Item2).NonZerosCount;
dataWriter.Write(count);
}
@ -655,7 +655,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item2.Real);
}
@ -666,7 +666,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item2.Real);
}
@ -699,7 +699,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item1);
}
@ -718,7 +718,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
int count = 0;
foreach (var column in matrix.ColumnEnumerator())
{
count += ((Complex32.SparseVector)column.Value).NonZerosCount;
count += ((Complex32.SparseVector)column.Item2).NonZerosCount;
dataWriter.Write(count);
}
@ -734,7 +734,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item2.Real);
}
@ -748,7 +748,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
foreach (var column in matrix.ColumnEnumerator())
{
foreach (var row in column.Value.GetIndexedEnumerator())
foreach (var row in column.Item2.GetIndexedEnumerator())
{
dataWriter.Write(row.Item2.Real);
}

4
src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs

@ -556,7 +556,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
item = enumerator.Current;
Assert.AreEqual(1, item.Item1);
Assert.AreEqual(1, item.Item2);
Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
Assert.AreEqual(Complex.Zero, item.Item3);
enumerator.MoveNext();
item = enumerator.Current;
@ -580,7 +580,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
item = enumerator.Current;
Assert.AreEqual(2, item.Item1);
Assert.AreEqual(2, item.Item2);
Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
Assert.AreEqual(new Complex(3.0, 1.0), item.Item3);
}
}
}

4
src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs

@ -556,7 +556,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
item = enumerator.Current;
Assert.AreEqual(1, item.Item1);
Assert.AreEqual(1, item.Item2);
Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
Assert.AreEqual(Complex32.Zero, item.Item3);
enumerator.MoveNext();
item = enumerator.Current;
@ -580,7 +580,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
item = enumerator.Current;
Assert.AreEqual(2, item.Item1);
Assert.AreEqual(2, item.Item2);
Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
Assert.AreEqual(new Complex32(3.0f, 1.0f), item.Item3);
}
}
}

4
src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs

@ -556,7 +556,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
item = enumerator.Current;
Assert.AreEqual(1, item.Item1);
Assert.AreEqual(1, item.Item2);
Assert.AreEqual(1.0, item.Item3);
Assert.AreEqual(0.0, item.Item3);
enumerator.MoveNext();
item = enumerator.Current;
@ -580,7 +580,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
item = enumerator.Current;
Assert.AreEqual(2, item.Item1);
Assert.AreEqual(2, item.Item2);
Assert.AreEqual(2.0, item.Item3);
Assert.AreEqual(3.0, item.Item3);
}
}
}

4
src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs

@ -555,7 +555,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
item = enumerator.Current;
Assert.AreEqual(1, item.Item1);
Assert.AreEqual(1, item.Item2);
Assert.AreEqual(1.0f, item.Item3);
Assert.AreEqual(0.0f, item.Item3);
enumerator.MoveNext();
item = enumerator.Current;
@ -579,7 +579,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
item = enumerator.Current;
Assert.AreEqual(2, item.Item1);
Assert.AreEqual(2, item.Item2);
Assert.AreEqual(2.0f, item.Item3);
Assert.AreEqual(3.0f, item.Item3);
}
}
}

Loading…
Cancel
Save