将 uint32 数据从 hdf5 文件写入 java 中的数组的最简单方法是什么?
What is the easiest way to write uint32 data from a hdf5 file to an array in java?
我有一个 hdf5 文件,其中 table 264x264x1024 填充了 uint32
数字。
我无法理解如何从 java 中获取 hdf5 文件的数据。
我想将 table 中的数据写入数组。
有简单的方法吗?
遗憾的是,我正在使用的系统仍然是 java6.
抱歉,如果问题不是很具体,如果您需要更多信息来帮助我,请询问。正如我所说,我还不太了解 hdf5。
谢谢
解决这个问题的最简单方法之一是从 Java 中的 HDF5 文件的底层细节中抽象出来。你可以这样做
通过使用 HDFql(分层数据格式查询语言 - http://www.hdfql.com)。
假设您的 HDF5 文件名为 my_file.h5
并且它存储了一个名为 my_dataset
的数据集(uint32 的尺寸为 264x264x1024),您
可以使用 HDFql 将其读入 Java 数组,如下所示:
// import HDFql package (make sure it can be found by the Java compiler/JVM)
import as.hdfql.*;
public class Example
{
public static void main(String args[])
{
int data[][][] = new int[264][264][1024];
int x;
int y;
int z;
// select (i.e. read) a dataset name "my_dataset" from HDF5 file "my_file.h5" and store it in variable "data"
HDFql.execute("SELECT FROM my_file.h5 my_dataset INTO MEMORY " + HDFql.variableTransientRegister(data));
// display content of variable "data"
for(x = 0; x < 264; x++)
{
for(y = 0; y < 264; y++)
{
for(z = 0; z < 1024; z++)
{
System.out.println(data[x][y][z]);
}
}
}
}
}
此示例已成功 运行 使用 Java 8 和 HDFql 版本 2.1.0。此外,请记住:
Java不支持uint32
等无符号数据类型(需要自行转换);
如果没有足够的堆 space 供 Java 存储具有这些尺寸的数组,您可能 运行 进入 OutOfMemoryError
异常
(要解决这个问题,您必须在启动 Java 时使用参数 -Xmx
)。
我有一个 hdf5 文件,其中 table 264x264x1024 填充了 uint32
数字。
我无法理解如何从 java 中获取 hdf5 文件的数据。
我想将 table 中的数据写入数组。
有简单的方法吗?
遗憾的是,我正在使用的系统仍然是 java6.
抱歉,如果问题不是很具体,如果您需要更多信息来帮助我,请询问。正如我所说,我还不太了解 hdf5。
谢谢
解决这个问题的最简单方法之一是从 Java 中的 HDF5 文件的底层细节中抽象出来。你可以这样做 通过使用 HDFql(分层数据格式查询语言 - http://www.hdfql.com)。
假设您的 HDF5 文件名为 my_file.h5
并且它存储了一个名为 my_dataset
的数据集(uint32 的尺寸为 264x264x1024),您
可以使用 HDFql 将其读入 Java 数组,如下所示:
// import HDFql package (make sure it can be found by the Java compiler/JVM)
import as.hdfql.*;
public class Example
{
public static void main(String args[])
{
int data[][][] = new int[264][264][1024];
int x;
int y;
int z;
// select (i.e. read) a dataset name "my_dataset" from HDF5 file "my_file.h5" and store it in variable "data"
HDFql.execute("SELECT FROM my_file.h5 my_dataset INTO MEMORY " + HDFql.variableTransientRegister(data));
// display content of variable "data"
for(x = 0; x < 264; x++)
{
for(y = 0; y < 264; y++)
{
for(z = 0; z < 1024; z++)
{
System.out.println(data[x][y][z]);
}
}
}
}
}
此示例已成功 运行 使用 Java 8 和 HDFql 版本 2.1.0。此外,请记住:
Java不支持
uint32
等无符号数据类型(需要自行转换);如果没有足够的堆 space 供 Java 存储具有这些尺寸的数组,您可能 运行 进入
OutOfMemoryError
异常 (要解决这个问题,您必须在启动 Java 时使用参数-Xmx
)。