Browse Source

Data: Matlab: api naming

pull/248/head
Christoph Ruegg 12 years ago
parent
commit
4f4987ce34
  1. 6
      src/Data/Matlab/MatlabMatrix.cs
  2. 36
      src/Data/Matlab/MatlabReader.cs
  3. 1
      src/Data/Matlab/Parser.cs
  4. 48
      src/DataUnitTests/Matlab/MatlabReaderTests.cs
  5. 8
      src/DataUnitTests/Matlab/MatlabWriterTests.cs

6
src/Data/Matlab/MatlabMatrix.cs

@ -33,8 +33,14 @@ namespace MathNet.Numerics.Data.Matlab
public class MatlabMatrix
{
internal byte[] Data { get; private set; }
/// <summary>Name of the matrix</summary>
public string Name { get; private set; }
/// <summary>Matrix size in bytes</summary>
public int Size { get; private set; }
/// <summary>Number of dimensions</summary>
public int Dimensions { get; private set; }
internal MatlabMatrix(string name, int size, int dimensions, byte[] data)

36
src/Data/Matlab/MatlabReader.cs

@ -44,7 +44,7 @@ namespace MathNet.Numerics.Data.Matlab
/// <summary>
/// List all compatible matrices from a MATLAB file stream.
/// </summary>
public static List<MatlabMatrix> ListMatrices(Stream stream)
public static List<MatlabMatrix> List(Stream stream)
{
return Parser.ParseAll(stream);
}
@ -52,7 +52,7 @@ namespace MathNet.Numerics.Data.Matlab
/// <summary>
/// List all compatible matrices from a MATLAB file.
/// </summary>
public static List<MatlabMatrix> ListMatrices(string filePath)
public static List<MatlabMatrix> List(string filePath)
{
using (var stream = File.OpenRead(filePath))
{
@ -60,11 +60,21 @@ namespace MathNet.Numerics.Data.Matlab
}
}
/// <summary>
/// Unpacks the matrix of a MATLAB matrix data object.
/// </summary>
/// <typeparam name="TDataType">The data type of the Matrix. It can be either: double, float, Complex, or Complex32.</typeparam>
public static Matrix<TDataType> Unpack<TDataType>(MatlabMatrix matrixData)
where TDataType : struct, IEquatable<TDataType>, IFormattable
{
return Parser.ReadMatrixBlock<TDataType>(matrixData.Data);
}
/// <summary>
/// Read the first or a specific matrix from a MATLAB file stream.
/// </summary>
/// <typeparam name="TDataType">The data type of the Matrix. It can be either: double, float, Complex, or Complex32.</typeparam>
public static Matrix<TDataType> ReadMatrix<TDataType>(Stream stream, string matrixName = null)
public static Matrix<TDataType> Read<TDataType>(Stream stream, string matrixName = null)
where TDataType : struct, IEquatable<TDataType>, IFormattable
{
var matrices = Parser.ParseAll(stream);
@ -87,30 +97,20 @@ namespace MathNet.Numerics.Data.Matlab
/// Read the first or a specific matrix from a MATLAB file.
/// </summary>
/// <typeparam name="TDataType">The data type of the Matrix. It can be either: double, float, Complex, or Complex32.</typeparam>
public static Matrix<TDataType> ReadMatrix<TDataType>(string filePath, string matrixName = null)
public static Matrix<TDataType> Read<TDataType>(string filePath, string matrixName = null)
where TDataType : struct, IEquatable<TDataType>, IFormattable
{
using (var stream = File.OpenRead(filePath))
{
return ReadMatrix<TDataType>(stream, matrixName);
return Read<TDataType>(stream, matrixName);
}
}
/// <summary>
/// Read the matrix of a MATLAB matrix data object.
/// </summary>
/// <typeparam name="TDataType">The data type of the Matrix. It can be either: double, float, Complex, or Complex32.</typeparam>
public static Matrix<TDataType> ReadMatrix<TDataType>(MatlabMatrix matrixData)
where TDataType : struct, IEquatable<TDataType>, IFormattable
{
return Parser.ReadMatrixBlock<TDataType>(matrixData.Data);
}
/// <summary>
/// Read all matrices or those with matching name from a MATLAB file stream.
/// </summary>
/// <typeparam name="TDataType">The data type of the Matrix. It can be either: double, float, Complex, or Complex32.</typeparam>
public static Dictionary<string, Matrix<TDataType>> ReadMatrices<TDataType>(Stream stream, params string[] matrixNames)
public static Dictionary<string, Matrix<TDataType>> ReadAll<TDataType>(Stream stream, params string[] matrixNames)
where TDataType : struct, IEquatable<TDataType>, IFormattable
{
var names = new HashSet<string>(matrixNames);
@ -123,12 +123,12 @@ namespace MathNet.Numerics.Data.Matlab
/// Read all matrices or those with matching name from a MATLAB file.
/// </summary>
/// <typeparam name="TDataType">The data type of the Matrix. It can be either: double, float, Complex, or Complex32.</typeparam>
public static Dictionary<string, Matrix<TDataType>> ReadMatrices<TDataType>(string filePath, params string[] matrixNames)
public static Dictionary<string, Matrix<TDataType>> ReadAll<TDataType>(string filePath, params string[] matrixNames)
where TDataType : struct, IEquatable<TDataType>, IFormattable
{
using (var stream = File.OpenRead(filePath))
{
return ReadMatrices<TDataType>(stream, matrixNames);
return ReadAll<TDataType>(stream, matrixNames);
}
}
}

1
src/Data/Matlab/Parser.cs

@ -211,6 +211,7 @@ namespace MathNet.Numerics.Data.Matlab
size = reader.ReadInt32();
smallBlock = false;
}
reader.BaseStream.Seek(size, SeekOrigin.Current);
AlignData(reader.BaseStream, size, smallBlock);

48
src/DataUnitTests/Matlab/MatlabReaderTests.cs

@ -42,7 +42,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadAllMatrices()
{
var matrices = MatlabReader.ReadMatrices<double>("./data/Matlab/collection.mat");
var matrices = MatlabReader.ReadAll<double>("./data/Matlab/collection.mat");
Assert.AreEqual(30, matrices.Count);
foreach (var matrix in matrices)
{
@ -56,7 +56,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadFirstMatrix()
{
var matrix = MatlabReader.ReadMatrix<double>("./data/Matlab/A.mat");
var matrix = MatlabReader.Read<double>("./data/Matlab/A.mat");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Double.DenseMatrix), matrix.GetType());
@ -69,7 +69,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNamedMatrices()
{
var matrices = MatlabReader.ReadMatrices<double>("./data/Matlab/collection.mat", "Ad", "Au64");
var matrices = MatlabReader.ReadAll<double>("./data/Matlab/collection.mat", "Ad", "Au64");
Assert.AreEqual(2, matrices.Count);
foreach (var matrix in matrices)
{
@ -83,7 +83,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNamedMatrix()
{
var matrices = MatlabReader.ReadMatrices<double>("./data/Matlab/collection.mat", "Ad");
var matrices = MatlabReader.ReadAll<double>("./data/Matlab/collection.mat", "Ad");
Assert.AreEqual(1, matrices.Count);
var ad = matrices["Ad"];
Assert.AreEqual(100, ad.RowCount);
@ -98,7 +98,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNamedSparseMatrix()
{
var matrix = MatlabReader.ReadMatrix<double>("./data/Matlab/sparse-small.mat", "S");
var matrix = MatlabReader.Read<double>("./data/Matlab/sparse-small.mat", "S");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Double.SparseMatrix), matrix.GetType());
@ -111,7 +111,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadComplexAllMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex>("./data/Matlab/complex.mat");
var matrices = MatlabReader.ReadAll<Complex>("./data/Matlab/complex.mat");
Assert.AreEqual(3, matrices.Count);
foreach (var matrix in matrices)
{
@ -131,7 +131,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadSparseComplexAllMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex>("./data/Matlab/sparse_complex.mat");
var matrices = MatlabReader.ReadAll<Complex>("./data/Matlab/sparse_complex.mat");
Assert.AreEqual(3, matrices.Count);
foreach (var matrix in matrices)
{
@ -151,7 +151,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplexAllMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex>("./data/Matlab/collection.mat");
var matrices = MatlabReader.ReadAll<Complex>("./data/Matlab/collection.mat");
Assert.AreEqual(30, matrices.Count);
foreach (var matrix in matrices)
{
@ -165,7 +165,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplexFirstMatrix()
{
var matrix = MatlabReader.ReadMatrix<Complex>("./data/Matlab/A.mat");
var matrix = MatlabReader.Read<Complex>("./data/Matlab/A.mat");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Complex.DenseMatrix), matrix.GetType());
@ -178,7 +178,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplexNamedMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex>("./data/Matlab/collection.mat", "Ad", "Au64");
var matrices = MatlabReader.ReadAll<Complex>("./data/Matlab/collection.mat", "Ad", "Au64");
Assert.AreEqual(2, matrices.Count);
foreach (var matrix in matrices)
{
@ -192,7 +192,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplexNamedMatrix()
{
var matrices = MatlabReader.ReadMatrices<Complex>("./data/Matlab/collection.mat", "Ad");
var matrices = MatlabReader.ReadAll<Complex>("./data/Matlab/collection.mat", "Ad");
Assert.AreEqual(1, matrices.Count);
var ad = matrices["Ad"];
Assert.AreEqual(100, ad.RowCount);
@ -207,7 +207,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplexNamedSparseMatrix()
{
var matrix = MatlabReader.ReadMatrix<Complex>("./data/Matlab/sparse-small.mat", "S");
var matrix = MatlabReader.Read<Complex>("./data/Matlab/sparse-small.mat", "S");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Complex.SparseMatrix), matrix.GetType());
@ -220,7 +220,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadComplex32AllMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex32>("./data/Matlab/complex.mat");
var matrices = MatlabReader.ReadAll<Complex32>("./data/Matlab/complex.mat");
Assert.AreEqual(3, matrices.Count);
foreach (var matrix in matrices)
{
@ -240,7 +240,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadSparseComplex32AllMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex32>("./data/Matlab/sparse_complex.mat");
var matrices = MatlabReader.ReadAll<Complex32>("./data/Matlab/sparse_complex.mat");
Assert.AreEqual(3, matrices.Count);
foreach (var matrix in matrices)
{
@ -260,7 +260,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplex32AllMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex32>("./data/Matlab/collection.mat");
var matrices = MatlabReader.ReadAll<Complex32>("./data/Matlab/collection.mat");
Assert.AreEqual(30, matrices.Count);
foreach (var matrix in matrices)
{
@ -274,7 +274,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplex32FirstMatrix()
{
var matrix = MatlabReader.ReadMatrix<Complex32>("./data/Matlab/A.mat");
var matrix = MatlabReader.Read<Complex32>("./data/Matlab/A.mat");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Complex32.DenseMatrix), matrix.GetType());
@ -287,7 +287,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplex32NamedMatrices()
{
var matrices = MatlabReader.ReadMatrices<Complex32>("./data/Matlab/collection.mat", "Ad", "Au64");
var matrices = MatlabReader.ReadAll<Complex32>("./data/Matlab/collection.mat", "Ad", "Au64");
Assert.AreEqual(2, matrices.Count);
foreach (var matrix in matrices)
{
@ -301,7 +301,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplex32NamedMatrix()
{
var matrices = MatlabReader.ReadMatrices<Complex32>("./data/Matlab/collection.mat", "Ad");
var matrices = MatlabReader.ReadAll<Complex32>("./data/Matlab/collection.mat", "Ad");
Assert.AreEqual(1, matrices.Count);
var ad = matrices["Ad"];
Assert.AreEqual(100, ad.RowCount);
@ -316,7 +316,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadNonComplex32NamedSparseMatrix()
{
var matrix = MatlabReader.ReadMatrix<Complex32>("./data/Matlab/sparse-small.mat", "S");
var matrix = MatlabReader.Read<Complex32>("./data/Matlab/sparse-small.mat", "S");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Complex32.SparseMatrix), matrix.GetType());
@ -329,7 +329,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadFloatAllMatrices()
{
var matrices = MatlabReader.ReadMatrices<float>("./data/Matlab/collection.mat");
var matrices = MatlabReader.ReadAll<float>("./data/Matlab/collection.mat");
Assert.AreEqual(30, matrices.Count);
foreach (var matrix in matrices)
{
@ -343,7 +343,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadFloatFirstMatrix()
{
var matrix = MatlabReader.ReadMatrix<float>("./data/Matlab/A.mat");
var matrix = MatlabReader.Read<float>("./data/Matlab/A.mat");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Single.DenseMatrix), matrix.GetType());
@ -356,7 +356,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadFloatNamedMatrices()
{
var matrices = MatlabReader.ReadMatrices<float>("./data/Matlab/collection.mat", "Ad", "Au64");
var matrices = MatlabReader.ReadAll<float>("./data/Matlab/collection.mat", "Ad", "Au64");
Assert.AreEqual(2, matrices.Count);
foreach (var matrix in matrices)
{
@ -370,7 +370,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadFloatNamedMatrix()
{
var matrices = MatlabReader.ReadMatrices<float>("./data/Matlab/collection.mat", "Ad");
var matrices = MatlabReader.ReadAll<float>("./data/Matlab/collection.mat", "Ad");
Assert.AreEqual(1, matrices.Count);
var ad = matrices["Ad"];
Assert.AreEqual(100, ad.RowCount);
@ -385,7 +385,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadFloatNamedSparseMatrix()
{
var matrix = MatlabReader.ReadMatrix<float>("./data/Matlab/sparse-small.mat", "S");
var matrix = MatlabReader.Read<float>("./data/Matlab/sparse-small.mat", "S");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Single.SparseMatrix), matrix.GetType());

8
src/DataUnitTests/Matlab/MatlabWriterTests.cs

@ -116,7 +116,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
writer.WriteMatrices(write, names);
writer.Dispose();
var read = MatlabReader.ReadMatrices<double>("testd.mat", names);
var read = MatlabReader.ReadAll<double>("testd.mat", names);
Assert.AreEqual(write.Length, read.Count);
@ -171,7 +171,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
writer.WriteMatrices(write, names);
writer.Dispose();
var read = MatlabReader.ReadMatrices<float>("tests.mat", names);
var read = MatlabReader.ReadAll<float>("tests.mat", names);
Assert.AreEqual(write.Length, read.Count);
@ -226,7 +226,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
writer.WriteMatrices(write, names);
writer.Dispose();
var read = MatlabReader.ReadMatrices<Complex32>("testc.mat", names);
var read = MatlabReader.ReadAll<Complex32>("testc.mat", names);
Assert.AreEqual(write.Length, read.Count);
@ -281,7 +281,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
writer.WriteMatrices(write, names);
writer.Dispose();
var read = MatlabReader.ReadMatrices<Complex>("testz.mat", names);
var read = MatlabReader.ReadAll<Complex>("testz.mat", names);
Assert.AreEqual(write.Length, read.Count);

Loading…
Cancel
Save