首页 文章

Octave信号包安装

提问于
浏览
5

我在Ubuntu 16.04上,目前使用Octave作为Matlab的互逆信号处理 . 一切都很好,直到我需要使用 medfilt1 函数来获得中位数 . Octave生成了一个错误报告,指出我的系统上没有安装信号包 . 浏览了一下后我发现了命令

sudo apt-get install octave-signal

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

警告:'medfilt1'函数属于Octave Forge的信号包,你已安装但未加载 . 要加载包,请从Octave提示符运行'pkg load signal' . 请阅读http://www.octave.org/missing.html,了解如何提供缺少的功能 . 警告:从第524行未实现调用第5行filter-practice.m第8行第2列错误:'medfilt1'未定义在第8行第3列错误:从第8行第2列的filter-practice.m调用

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

找不到命令:pkg

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

2 回答

  • 4

    pkg 命令实际上是八度音程的一部分,应该在八度音程内运行,而不是从shell终端运行 .


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

  • 7

    我'll provide an answer here for future users, even though the post has an accepted answer already, as it'缺少所有相关细节 (if you're only interested in how to make a package installed via apt-get to show up on your octave session, see the bit at the end).

    要安装Octaveforge上列出的其中一个软件包(有关可用软件包的完整列表,请参见here),您可以从相应的页面下载特定软件包的 .tar.gz 文件(例如here用于 signal 软件包),然后转到该文件夹并在八度终端发出以下命令:

    pkg install signal
    

    或者更方便的是,您可以通过附加 -forge 选项,让octave直接从Octaveforge下载包并安装它:

    pkg install signal -forge
    

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

    安装软件包后,可以使用 pkg list 命令查询已安装软件包的列表 . 'loaded'包用星号标注,例如在我的PC上 .

    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 的文件中保留已安装软件包的列表,通常可以在八度安装或主文件夹中找到 . In the case that you've installed packages globally from a repository instead 您必须通过使用 pkg global_list 命令链接到相应的 octave_packages 文件(通常为 /usr/share/octave/octave_packages )来知道八度音程 .

    例如,我必须从存储库安装 odepkg ,因为上面的直接选项给了我一个错误 . 要使它出现在八度音阶的可用包列表中,您必须指定此类全局安装的pkgs的存在:

    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终端安装全局包 .

    有关详细信息,请参阅 pkg 命令的文档,方法是在octave终端中执行 help pkg .

相关问题