diff --git a/MatFileHandler.Tests/MatFileReaderHdfTests.cs b/MatFileHandler.Tests/MatFileReaderHdfTests.cs
index 3727358..a58e88a 100644
--- a/MatFileHandler.Tests/MatFileReaderHdfTests.cs
+++ b/MatFileHandler.Tests/MatFileReaderHdfTests.cs
@@ -204,6 +204,24 @@ namespace MatFileHandler.Tests
Assert.That(structure["y", 1, 2].IsEmpty, Is.True);
}
+ ///
+ /// Test reading a logical array.
+ ///
+ [Test]
+ public void TestLogical()
+ {
+ var matFile = ReadHdfTestFile("logical");
+ var array = matFile["logical_"].Value;
+ var logicalArray = array as IArrayOf;
+ Assert.That(logicalArray, Is.Not.Null);
+ Assert.That(logicalArray[0, 0], Is.True);
+ Assert.That(logicalArray[0, 1], Is.True);
+ Assert.That(logicalArray[0, 2], Is.False);
+ Assert.That(logicalArray[1, 0], Is.False);
+ Assert.That(logicalArray[1, 1], Is.True);
+ Assert.That(logicalArray[1, 2], Is.True);
+ }
+
private static void CheckComplexLimits(IArrayOf> array, T[] limits)
where T : struct
{
diff --git a/MatFileHandler.Tests/test-data/hdf/logical.mat b/MatFileHandler.Tests/test-data/hdf/logical.mat
new file mode 100644
index 0000000..edbc3c2
Binary files /dev/null and b/MatFileHandler.Tests/test-data/hdf/logical.mat differ
diff --git a/MatFileHandler/HdfFileReader.cs b/MatFileHandler/HdfFileReader.cs
index 8181b2f..f5af339 100644
--- a/MatFileHandler/HdfFileReader.cs
+++ b/MatFileHandler/HdfFileReader.cs
@@ -24,6 +24,7 @@ namespace MatFileHandler
MSingle,
MDouble,
MCell,
+ MLogical,
}
internal class HdfArray : IArray
@@ -440,6 +441,8 @@ namespace MatFileHandler
{
case "canonical empty":
return HdfMatlabClass.MEmpty;
+ case "logical":
+ return HdfMatlabClass.MLogical;
case "char":
return HdfMatlabClass.MChar;
case "int8":
@@ -598,6 +601,8 @@ namespace MatFileHandler
{
case HdfMatlabClass.MEmpty:
return HdfArray.Empty();
+ case HdfMatlabClass.MLogical:
+ return ReadNumericalArray(datasetId, dims, arrayType);
case HdfMatlabClass.MChar:
return ReadCharArray(datasetId, dims);
case HdfMatlabClass.MInt8:
@@ -651,6 +656,7 @@ namespace MatFileHandler
{
case HdfMatlabClass.MInt8:
case HdfMatlabClass.MUInt8:
+ case HdfMatlabClass.MLogical:
return 1;
case HdfMatlabClass.MInt16:
case HdfMatlabClass.MUInt16:
@@ -675,6 +681,7 @@ namespace MatFileHandler
case HdfMatlabClass.MInt8:
return H5T.NATIVE_INT8;
case HdfMatlabClass.MUInt8:
+ case HdfMatlabClass.MLogical:
return H5T.NATIVE_UINT8;
case HdfMatlabClass.MInt16:
return H5T.NATIVE_INT16;