diff --git a/src/Data/Matlab/MatlabMatrix.cs b/src/Data/Matlab/MatlabMatrix.cs
index 61f89036..00f99c04 100644
--- a/src/Data/Matlab/MatlabMatrix.cs
+++ b/src/Data/Matlab/MatlabMatrix.cs
@@ -33,8 +33,14 @@ namespace MathNet.Numerics.Data.Matlab
public class MatlabMatrix
{
internal byte[] Data { get; private set; }
+
+ /// Name of the matrix
public string Name { get; private set; }
+
+ /// Matrix size in bytes
public int Size { get; private set; }
+
+ /// Number of dimensions
public int Dimensions { get; private set; }
internal MatlabMatrix(string name, int size, int dimensions, byte[] data)
diff --git a/src/Data/Matlab/MatlabReader.cs b/src/Data/Matlab/MatlabReader.cs
index 76329dc0..73f95ea1 100644
--- a/src/Data/Matlab/MatlabReader.cs
+++ b/src/Data/Matlab/MatlabReader.cs
@@ -44,7 +44,7 @@ namespace MathNet.Numerics.Data.Matlab
///
/// List all compatible matrices from a MATLAB file stream.
///
- public static List ListMatrices(Stream stream)
+ public static List List(Stream stream)
{
return Parser.ParseAll(stream);
}
@@ -52,7 +52,7 @@ namespace MathNet.Numerics.Data.Matlab
///
/// List all compatible matrices from a MATLAB file.
///
- public static List ListMatrices(string filePath)
+ public static List List(string filePath)
{
using (var stream = File.OpenRead(filePath))
{
@@ -60,11 +60,21 @@ namespace MathNet.Numerics.Data.Matlab
}
}
+ ///
+ /// Unpacks the matrix of a MATLAB matrix data object.
+ ///
+ /// The data type of the Matrix. It can be either: double, float, Complex, or Complex32.
+ public static Matrix Unpack(MatlabMatrix matrixData)
+ where TDataType : struct, IEquatable, IFormattable
+ {
+ return Parser.ReadMatrixBlock(matrixData.Data);
+ }
+
///
/// Read the first or a specific matrix from a MATLAB file stream.
///
/// The data type of the Matrix. It can be either: double, float, Complex, or Complex32.
- public static Matrix ReadMatrix(Stream stream, string matrixName = null)
+ public static Matrix Read(Stream stream, string matrixName = null)
where TDataType : struct, IEquatable, 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.
///
/// The data type of the Matrix. It can be either: double, float, Complex, or Complex32.
- public static Matrix ReadMatrix(string filePath, string matrixName = null)
+ public static Matrix Read(string filePath, string matrixName = null)
where TDataType : struct, IEquatable, IFormattable
{
using (var stream = File.OpenRead(filePath))
{
- return ReadMatrix(stream, matrixName);
+ return Read(stream, matrixName);
}
}
- ///
- /// Read the matrix of a MATLAB matrix data object.
- ///
- /// The data type of the Matrix. It can be either: double, float, Complex, or Complex32.
- public static Matrix ReadMatrix(MatlabMatrix matrixData)
- where TDataType : struct, IEquatable, IFormattable
- {
- return Parser.ReadMatrixBlock(matrixData.Data);
- }
-
///
/// Read all matrices or those with matching name from a MATLAB file stream.
///
/// The data type of the Matrix. It can be either: double, float, Complex, or Complex32.
- public static Dictionary> ReadMatrices(Stream stream, params string[] matrixNames)
+ public static Dictionary> ReadAll(Stream stream, params string[] matrixNames)
where TDataType : struct, IEquatable, IFormattable
{
var names = new HashSet(matrixNames);
@@ -123,12 +123,12 @@ namespace MathNet.Numerics.Data.Matlab
/// Read all matrices or those with matching name from a MATLAB file.
///
/// The data type of the Matrix. It can be either: double, float, Complex, or Complex32.
- public static Dictionary> ReadMatrices(string filePath, params string[] matrixNames)
+ public static Dictionary> ReadAll(string filePath, params string[] matrixNames)
where TDataType : struct, IEquatable, IFormattable
{
using (var stream = File.OpenRead(filePath))
{
- return ReadMatrices(stream, matrixNames);
+ return ReadAll(stream, matrixNames);
}
}
}
diff --git a/src/Data/Matlab/Parser.cs b/src/Data/Matlab/Parser.cs
index 8bf503e4..a2f297be 100644
--- a/src/Data/Matlab/Parser.cs
+++ b/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);
diff --git a/src/DataUnitTests/Matlab/MatlabReaderTests.cs b/src/DataUnitTests/Matlab/MatlabReaderTests.cs
index c4cf8655..bda5dcad 100644
--- a/src/DataUnitTests/Matlab/MatlabReaderTests.cs
+++ b/src/DataUnitTests/Matlab/MatlabReaderTests.cs
@@ -42,7 +42,7 @@ namespace MathNet.Numerics.Data.UnitTests.Matlab
[Test]
public void CanReadAllMatrices()
{
- var matrices = MatlabReader.ReadMatrices("./data/Matlab/collection.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/A.mat");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/collection.mat", "Ad", "Au64");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/collection.mat", "Ad");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/sparse-small.mat", "S");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/complex.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/sparse_complex.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/collection.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/A.mat");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/collection.mat", "Ad", "Au64");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/collection.mat", "Ad");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/sparse-small.mat", "S");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/complex.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/sparse_complex.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/collection.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/A.mat");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/collection.mat", "Ad", "Au64");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/collection.mat", "Ad");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/sparse-small.mat", "S");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/collection.mat");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/A.mat");
+ var matrix = MatlabReader.Read("./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("./data/Matlab/collection.mat", "Ad", "Au64");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/collection.mat", "Ad");
+ var matrices = MatlabReader.ReadAll("./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("./data/Matlab/sparse-small.mat", "S");
+ var matrix = MatlabReader.Read("./data/Matlab/sparse-small.mat", "S");
Assert.AreEqual(100, matrix.RowCount);
Assert.AreEqual(100, matrix.ColumnCount);
Assert.AreEqual(typeof (LinearAlgebra.Single.SparseMatrix), matrix.GetType());
diff --git a/src/DataUnitTests/Matlab/MatlabWriterTests.cs b/src/DataUnitTests/Matlab/MatlabWriterTests.cs
index 19f7a591..1e879711 100644
--- a/src/DataUnitTests/Matlab/MatlabWriterTests.cs
+++ b/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("testd.mat", names);
+ var read = MatlabReader.ReadAll("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("tests.mat", names);
+ var read = MatlabReader.ReadAll("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("testc.mat", names);
+ var read = MatlabReader.ReadAll("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("testz.mat", names);
+ var read = MatlabReader.ReadAll("testz.mat", names);
Assert.AreEqual(write.Length, read.Count);