使用 Visual C++ 将二维数组 int[n][m] 写入 HDF5 文件

2024-01-09

我刚刚开始使用 HDF5,希望得到有关以下内容的一些建议。

我有一个二维数组:data[][]传递到一个方法中。该方法如下所示:

void WriteData( int data[48][100], int sizes[48])

数据的大小实际上不是 48 x 100,而是 48 x size[i]。 IE。每行的长度可能不同!在我正在处理的一种简单情况下,所有行的大小相同(但不是 100),因此您可以说该数组是 48 X 大小 [0]。

如何最好地将其写入 HDF5?

我有一些工作代码,其中循环 0 到 48 并为每一行创建一个新的数据集。

就像是:

for (int i = 0; i < 48; i++)
{
   hsize_t      dsSize[2];
   dsSize[0] = 48;
   dsSize[1] = sizes[0];  // use sizes[i] in most general case
   // Create the Data Space
   DataSpace dataSpace = DataSpace(2, dsSize);
   DataSet dataSet = group.createDataSet(dataSetName, intDataType, dataSpace);
   dataSet.write(data[i], intDataType);
}

有没有一种方法可以将所有数据一次性写入一个 DataSet 中?也许一种解决方案适用于所有行长度相同的更简单情况,另一种解决方案适用于参差不齐的行?

我尝试了一些方法但没有成功。我调用了 dataSet.write(data, intDataType),即我将整个数组扔给它。我似乎在文件中得到了垃圾,我怀疑是因为存储数据的数组实际上是 48x100,而我只需要其中的一小部分。

我突然想到我也许可以使用 double ptr int** 或 vector> 但我坚持这一点。据我所知,“写入”需要一个 void* ptr。另外,我希望该文件“看起来正确”。 IE。包含所有数据行的一个巨大行是不可取的,如果我必须走这条路,有人需要传达一种灵活的方式来存储信息,该信息将允许我从文件中读回数据(可能将行长度存储为属性) ?)。

也许我真正的问题是找到重要用例的 C++ 示例。

任何帮助深表感谢。

Dave


您可以使用以下方法来做到这一点变长数组 http://www.hdfgroup.org/HDF5/doc/cpplus_RM/class_h5_1_1_var_len_type.html如果您的数据是向量的向量(这似乎对您的用例有意义):

void WriteData(const std::vector< std::vector<int> >& data)
{
    hsize_t dim(data.size());
    H5::DataSpace dspace(1, &dim);
    H5::VarLenType dtype(H5::PredType::NATIVE_INT);
    H5::DataSet dset(group.createDataSet(dataSetName, dtype, dspace));
    hvl_t vl[dim];
    for (hsize_t i = 0; i < dim; ++i)
    {
        vl[i].len = data[i].size();
        vl[i].p = &data[i][0];
    }
    dset.write(vl, dtype);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Visual C++ 将二维数组 int[n][m] 写入 HDF5 文件 的相关文章

随机推荐

  • 将打字稿输出捆绑在单个文件中

    我在源文件夹中有一堆遵循 ecmascript 2015 模块模式的打字稿文件 我有 tsconfig 设置将转换后的文件输出到 lib 文件夹 效果很好 但是有什么方法可以将它们捆绑在一起形成一个可以在浏览器中使用的文件吗 我希望我的模块
  • Pinterest 无法获取图像

    尝试实现 固定它 按钮 但它会为每个图像返回以下问题 我们在整个网站上使用 SSL 我想知道这是否相关 任何想法 route pattern resource name method error api error code 1 messa
  • DropDownList OnSelectedIndexChange 到第 0 个索引,不带 ViewState

    我确实关注了这篇文章真正理解 ViewState http weblogs asp net infinitiesloop archive 2006 08 03 truly understanding viewstate aspx 顺便说一句
  • RPM 的名称-版本-发布的规则是什么?

    想象一个名为abc 123 1 x86 rpm 我发现其中有一个错误 但我不知道如何命名new包裹 Maybe abc 123 2 x86 rpm 但是如果有一个怎么办xyz rpm依赖于取决于abc 123 1 Maybe abc 123
  • ffmpeg转码为直播流

    我需要在 html 视频标签中显示 ip 摄像机流 我已经弄清楚如何从 rtsp 流转码到文件 如下所示 ffmpeg i rtsp user password ip s 640x480 tmp output mp4 现在我需要能够在这样的
  • 基于令牌的数据库身份验证失败,并显示“用户‘NT AUTHORITY\ANONYMOUS LOGON’登录失败”。

    我在基于令牌的数据库身份验证工作时遇到问题 使用 Active Directory 密码连接可以正常工作 但是当使用令牌连接时 我收到以下错误 用户 NT AUTHORITY ANONYMOUS LOGON 登录失败 这个问题已经讨论过了在
  • Admob 中介 - 发布商 ID 与中介 ID

    我想知道 Admob 中介的正确范例是什么 到目前为止 我已经有了一个普通的 AdView 横幅 这就是我认为它应该如何工作的 onFailedToReceiveAd 捕获此事件 这意味着 admob 无法提供广告 使用中介 ID 创建新的
  • 使用 MinGW 的 Eclipse CDT 不在控制台中输出

    我有一台 Windows 7 64 位 PC 并且正在尝试安装免费的 C IDE 因此我选择使用 CDT 安装 Eclipse Helios 对于 g make 和 gdb 我根据本教程安装了 msys 和 mingw http wiki
  • CoffeeScript 在更改和加载时动态选择表单字段

    我有一个 Rails 应用程序 我试图根据表单中选择的区域来选择设施列表 到目前为止 我已经实现了 group collection select 以及一些 CoffeeScript 来执行此操作 它在创建新记录和选择区域时起作用 行为是仅
  • py2neo 中的批处理

    我已经开始使用 Node4j 并且正在探索一些批处理 但不幸的是 我在创建节点之间的关系时遇到了一些问题 我的问题如下 我有一个从文件中读取的网站和用户列表 我可能在该文件中有重复的网站和用户 所以我不想为这些重复的条目插入新节点 但由于文
  • 如何将一些文本信息封装在图像中并使用 MATLAB 提取它?

    new img convert img text img text convert back new img 有人可以用 MATLAB 的内置图像来说明吗 我相信你正在寻找隐写术 http en wikipedia org wiki Ste
  • 更改 Yii2 视图中的布局文件

    我正在使用 Yii2 做一个小项目 假设我在视图中有相同的布局 页眉 页脚 例如site 除了login php在此看来 我想在这个文件中使用不同的页眉 页脚或没有页眉 页脚 我可以做什么来仅从此视图文件中删除页眉 页脚 我所能做的就是在不
  • htmlagilitypack 和动态内容问题

    我想创建一个网络 scraper 应用程序 并且我想使用网络浏览器控件 htmlagilitypack 和 xpath 来完成它 现在我设法创建 xpath 生成器 我使用网络浏览器用于此目的 它工作正常 但有时我无法动态获取 通过 jav
  • 当包含 Ice 服务器时,WebRTC 陷入连接状态(远程候选者甚至通过 LAN 也会导致问题)

    我暂时创建了一个RTCPeerConnection没有任何iceServers在尝试解决一个问题时上一期 https stackoverflow com questions 62020695 webrtc stuck in connecti
  • 如何正确访问当前AppDomain的PrivateBinPath属性?

    由于 AppDomain AppendPrivatePath 已过时 我试图弄清楚如何为项目中的当前 AppDomain 指定 PrivateBinPath 而不需要启动一个全新的 AppDomain 并且稍后能够访问它 我知道我可以在 A
  • 如何完全禁用 Django 管理员的身份验证

    我有一个 Django 服务器 使用 PostGis 我想禁用与身份验证相关的所有内容 进入管理员时无需进行身份验证 在管理中隐藏用户 组 在网上搜索后我尝试了以下组合this https stackoverflow com a 40008
  • 如何使用button props动态禁用antd modal的按钮

    我有一个 antd Modal 我正在尝试验证一个字段并为其提供验证 如何根据验证启用 禁用 确定 按钮 如果验证成功 则应启用按钮 否则应禁用按钮
  • 随处使用 Visual Studio 命令提示符工具

    如何使用 VS 命令提示符中包含的工具 Programs MS Visual Studio 2008 Visual Studio Tools Visual Studio 2008 Command Prompt 从任何命令提示符 即不调用vc
  • 自动将产品分配到 WooCommerce 中定义的产品类别

    在 Woocommerce 中 如果产品具有特定的自定义字段值 使用高级自定义字段插件生成此字段 我会尝试自动将给定的产品类别分配给产品 In my functions php我有 function auto add category pr
  • 使用 Visual C++ 将二维数组 int[n][m] 写入 HDF5 文件

    我刚刚开始使用 HDF5 希望得到有关以下内容的一些建议 我有一个二维数组 data 传递到一个方法中 该方法如下所示 void WriteData int data 48 100 int sizes 48 数据的大小实际上不是 48 x