【问题标题】:Load matrix from file with use of Octave C++ API使用 Octave C++ API 从文件加载矩阵
【发布时间】:2015-02-12 23:19:07
【问题描述】:

是否可以在运行时使用 Octave C++ API 从外部文件加载 PETSc 二进制格式的矩阵?我找到了Doxygen documentation,但是在这么多项目中我找不到任何有用的东西。

当我想将 PETSc 矩阵加载到 Octave 时,通常我使用“PetscBinaryRead.m”,但现在在 C++ 中我真的完全迷路了。

【问题讨论】:

    标签: c++ matlab matrix octave petsc


    【解决方案1】:

    PetscBinaryRead.m 不是 Octave 的一部分,我们不知道你从哪里得到它,甚至不知道它的作用。你可以:

    1. 在 C++、C 或 Fortran 上重新实现它(只有您知道它的作用)
    2. 在 C++ 中启动 Octave 解释器并从那里调用 PetscBinaryRead(参见 Octave 手册了解如何创建 standalone programscalling Octave Functions from Oct-files

    【讨论】:

    • 哦,我忘了提 - PetscBinaryRead.m 是包含在 PETSc 包中的常用 Octave/MatLab 脚本,可以加载 PETSc 二进制矩阵。它将矩阵文件的名称作为参数。所以,第二个选项可能是我需要的。但我必须承认,我仍然看不到执行此脚本的方法。这是 .m 脚本:fossies.org/dox/petsc-3.5.3/PetscBinaryRead_8m_source.html
    • @MartinBeseda 如果您需要帮助,您需要更具体地说明您不了解的内容。还有很多关于人们试图在他们的应用程序中嵌入八度代码的问题。基本上,您需要启动解释器,设置补丁,然后调用 m 文件中的函数。
    • 好的,现在我有了链接 Octave 头文件和库的项目。我声明了 Matrix 变量。而且我需要知道 API 中的函数,它将从 m-file 调用函数(该函数将从文件中加载矩阵,并将其分配给我的 Matrix 变量)。是不是更清楚了?如果不是,我很抱歉:-)
    • @MartinBeseda 根据答案上的链接,甚至有一个例子,你需要启动解释器(调用octave_main),然后调用你的函数feval,这将返回一个八度值列表。该列表的一个元素将是您的矩阵(可能是第一个)。您可以通过从 octave_value 类中选择适当的方法来获取 Matrix 类型。
    • 非常感谢。我编写了对我来说似乎正确的代码,但我得到了错误。问题是,我正在尝试在Kaira 中使用 Octave,但尚未完成,因此错误消息不是很清楚。那么,请您看看我的代码并告诉我,如果我理解正确吗?我的代码是here。错误可能是第12行调用matrix_value()方法引起的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多