Octave信号包安装

Octave signal package installation

我在 Ubuntu 16.04,目前使用 Octave 作为 Matlab 的倒数来进行信号处理。一切都很好,直到我需要使用 medfilt1 函数来获取中位数。 Octave 生成​​了一个错误报告,指出信号包未安装在我的系统上。浏览了一下后,我找到了命令

 sudo apt-get install octave-signal

我运行这个命令,它显示了所有下载和安装的完美。但是,如果我再次 运行 八度脚本,错误仍然存​​在:

warning: the 'medfilt1' function belongs to the signal package from Octave Forge which you have installed but not loaded. To load the package, run 'pkg load signal' from the Octave prompt.

Please read http://www.octave.org/missing.html to learn how you can contribute missing functionality. warning: called from unimplemented at line 524 column 5 filter-practice.m at line 8 column 2 error: 'medfilt1' undefined near line 8 column 3 error: called from filter-practice.m at line 8 column 2

分析错误信息我试图运行pkg load signal但是终端告诉我没有这样的命令。

command not found: pkg

如何在我的系统上安装信号包?

pkg 命令实际上是八度的一部分,应该是来自八度内的 运行,而不是来自 shell 终端。


此答案归功于此 thread 中的成员,但由于他们同样在扩展评论中得出了结论并且最终没有发布答案,也许这会发现其他一些人陷入困境这个陷阱:)

我会在这里为未来的用户提供一个答案,即使 post 已经有一个被接受的答案,因为它缺少所有相关细节 (如果你只对如何通过 apt-get 安装包以显示在您的 Octave 会话中,请参阅最后的部分)。

signal 软件包安装 Octaveforge (see here for the full list of available packages), you can download the .tar.gz file for the particular package from its respective page (e.g. here 中列出的软件包之一),然后转到该文件夹​​并以 octave[=60] 发出以下命令=]终端机:

pkg install signal

或者更方便的是,您可以要求 Octave 直接从 Octaveforge 下载软件包并安装它,方法是附加 -forge 选项:

pkg install signal -forge

如果您不喜欢默认位置(通常是 ~/octave),您可能还需要指定 位置 来安装此类软件包,使用 pkg prefix 安装包之前的命令(有关详细信息,请参阅文档)。

安装包后,您可以使用pkg list命令查询已安装包的列表; 'loaded' 包标有星号,例如在我的电脑上。

octave:1> pkg list
Package Name         | Version | Installation directory
---------------------+---------+-----------------------
fuzzy-logic-toolkit  |   0.4.5 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/fuzzy-logic-toolkit-0.4.5
              image *|   2.6.1 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/image-2.6.1
                 io  |   2.4.7 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/io-2.4.7
         statistics  |   1.3.0 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/statistics-1.3.0

加载一个包,使用pkg load命令;任何 'dependencies' 也将自动加载,例如:

octave:2> pkg load statistics
octave:3> pkg list
Package Name         | Version | Installation directory
---------------------+---------+-----------------------
fuzzy-logic-toolkit  |   0.4.5 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/fuzzy-logic-toolkit-0.4.5
              image *|   2.6.1 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/image-2.6.1
                 io *|   2.4.7 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/io-2.4.7
         statistics *|   1.3.0 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/statistics-1.3.0

以上方法均视为本地安装。 Octave 在名为 octave_packages 的文件中保留了已安装软件包的列表,通常可以在您的 Octave 安装或主文件夹中找到。 如果您是从存储库全局安装软件包,您将必须通过链接到适当的 octave_packages 文件(通常是 /usr/share/octave/octave_packages)让 Octave 知道使用 pkg global_list 命令。

例如,我必须从存储库安装 odepkg,因为上面的直接选项给我一个错误。要让它出现在 Octave 的可用包列表中,您必须指定是否存在此类全局安装的包:

octave:4> pkg global_list /usr/share/octave/octave_packages 
octave:5> pkg list
Package Name         | Version | Installation directory
---------------------+---------+-----------------------
fuzzy-logic-toolkit  |   0.4.5 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/fuzzy-logic-toolkit-0.4.5
              image *|   2.6.1 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/image-2.6.1
                 io *|   2.4.7 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/io-2.4.7
             odepkg  |   0.8.5 | /usr/share/octave/packages/odepkg-0.8.5
         statistics *|   1.3.0 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/statistics-1.3.0

但是,一般来说,在本地安装此类软件包可能更有用,因为存储库中的软件包版本通常已过时(并且必须执行pkg global_list 每次都很麻烦); 如果 octave 中的本地安装出于某种原因(例如出现编译错误)无法正常工作,我只会从 linux 终端安装全局包。

通过在 Octave 终端中执行 help pkg,查看 pkg 命令的文档以获取更多详细信息。