excel - 如何从 vba 使用 xtensor?

标签 excel vba xtensor

只需点击 xtensor,我喜欢它,我会尝试从 vba(excel)中使用它。
为了保持这个“测试”简单,我打算只使用 double 矩阵,它们作为 LPSAFEARRAY 传递给 C/C++ dll。

  • 在 dll 中,使用接收到的 LPSAFEARRAY 构建一维适配器,
    使用数据指针和大小(行 x 列)。我认为这是
    足够了,用于映射操作。
  • 棘手的部分是如果我需要矩阵,主要担心的是
    数据以 fortran(列优先)顺序传输。我没有找到
    任何 2D 适配器,所以我的猜测是我必须转换上面的 1D
    适配器:
    a) reshape it, to (columns, rows)
    
    b) transposed view of a)
    

  • 以上是正确的,还是有更简单、更直接的方法?

    这种访问数据的方法是否存在速度损失?

    最佳答案

    您可以通过调整函数将一维数组直接调整为具有所需布局的 N 维容器:

    double* data = get_data_buffer();
    auto adapter = xt::adapt<xt::layout_type::column_major>(data, {rows, columns});
    

    adapt documentation更多细节。

    关于excel - 如何从 vba 使用 xtensor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822734/

    相关文章:

    php - xls 文件 php 下载的格式与文件扩展名指定的格式不同

    每个 PDF 的 VBA 嵌套

    excel - 将 Google 搜索导出到电子表格

    excel - 如何匹配具有 2 个单独匹配列的行

    python - xtensor 和 xsimd : improve performance on reduction

    excel - 使用初始名称创建单词

    excel - 从两个不同的 VB (excel) 模块调用子功能/模块

    excel - 计算一个范围内数字的多个实例

    c++ - 从 xtensor 中的 View 中删除行

    c++ - 当代码在 Visual Studio C++ 中正常工作时出现 MSB6006 错误