0

我正在尝试使用一个利用 Matlab 的 eigs() 函数的工具箱。当我在 Octave(3.6.4,在 Mac OS X 上通过 Homebrew 安装)运行它时,将返回以下内容:

error: eigs: not available in this version of Octave

我发现了很多潜在的解决方案,关于让 ARPACK(-ng) 程序与 Octave 一起工作。我尝试了更多我记得的方法,但似乎没有一个有效。

有人知道使用 eigs() 函数的 Octave 的当前状态吗?这可能吗,最好是在 Homebrew 中使用包?

谢谢。

4

1 回答 1

1

我认为您指的是从 3.6 开始,Octave 不再附带 eigs,而是依赖于外部 arpack 库。来自Octave 发行说明

3.6 版重要的用户可见更改摘要:
-------------------------------------------------- --------
...
 ** ARPACK 库不再随 Octave 一起分发。
    如果您需要 eigs 或 svds 功能,您必须提供
    通过包管理器或编译它的外部 ARPACK
    你自己。如果您的系统不存在预编译包,
    您可以在以下位置找到当前的 ARPACK 来源
    http://forge.scilab.org/index.php/p/arpack-ng

因此,您需要在安装 Octave 之前安装一个 arpack 库,该库对 Octave 可见。对于自制软件,这意味着在 /usr/local/ 下。

Octave 的configure文件具有 arpack 检测逻辑,并且默认情况下它会在构建过程中检测 arpack,并在存在时针对它进行构建。因此,如果您安装了 Homebrew 的 octave,即使在公式中没有对它的特殊支持,它也应该会选择它。

当前的 homebrew-science 版本中没有 arpack 公式,但有一个开放的 pull request 可以添加:https ://github.com/Homebrew/homebrew-science/pull/112 。去那里发表评论以表示支持,也许它很快就会被合并。一旦进入,做brew install libarpack; brew install octave,你的八度可能会拿起eigs。如果没有,则提出反对 homebrew-science 的问题以添加 arpack 支持。

于 2013-04-25T00:52:27.803 回答