我尝试了ILNumerics.IO.HDF5并且无法读取以下数据:
在HDFView 2.10.1中我可以读取这些数据: https://anonfiles.com/file/13756916026cafc4e4ec7c333f235bda
如何将ILNumerics.IO.HDF5用于此数据?
我发现另一篇文章建议将字符串读为char。 但是使用变长字符串会抛出异常:"从属性中读取数据时出错!"
var file = new H5File("test.h5");
H5Dataset ds1 = file.First<H5Dataset>("Wind");
var att = ds1.Attributes["Aggregator"];
var value = att.Get<char>();
答案 0 :(得分:2)
您是否可以提供有关如何编写字符串属性以及问题究竟是什么的更多信息。如果您说“无法读取&#39;”,您是否获得空返回值,或者您是否获得例外。
我在应用程序中将字符串作为属性编写,它工作正常。我猜你写字符串的方式可能有问题。根据Haymo的建议,我将字符串转换为char数组并写为属性。这是示例代码
private ILRetArray<Char> ConvertStringToArray(string str)
{
using (ILScope.Enter())
{
ILArray<Char> A = ILMath.array<Char>(' ', 1, str.Length);
for (int i = 0; i < str.Length; i++)
{
A.SetValue(str[i], 0, i);
}
return A;
}
}
测试用例:
using (var file = new H5File("testwrite.h5"))
{
var ds = new H5Dataset("data", ILMath.rand(10,10));
file.Add(ds);
string teststr = "Test string";
ILArray<char> charStr = ConvertStringToArray(mystr);
ds.Attributes.Add(new H5Attribute("mystring",charStr));
//Read back the dataset and its attributes
var group = file.Find<H5Dataset>("data").First();
ILArray<Char> storedData = group.Attributes["mystring"].Get<Char>();
}