Octave 如何知道我已经下载了哪些八度音阶的软件包?

Octave 如何知道我已经下载了哪些八度音阶的软件包?,octave,windows,Octave,Windows,几天前我刚刚安装了Octave,我想我一直在使用“pkg load name”功能安装软件包,但从未得到确认或任何软件试图下载的信息。我还尝试了pkg安装-forge包的名称,但似乎不起作用。这两个电话有区别吗 及;我怎么知道他们正在下载?我在哪里可以找到它们的列表?在windows下,octave 4.2.1中的下载功能和自动软件包安装被破坏。然而,标准数据包随基础安装而来。只需键入 pkg列表 在octave控制台中显示所有已安装的软件包。在我的例子中,结果列表以这些行开始 Package

几天前我刚刚安装了Octave,我想我一直在使用“pkg load name”功能安装软件包,但从未得到确认或任何软件试图下载的信息。我还尝试了pkg安装-forge包的名称,但似乎不起作用。这两个电话有区别吗


及;我怎么知道他们正在下载?我在哪里可以找到它们的列表?

在windows下,octave 4.2.1中的下载功能和自动软件包安装被破坏。然而,标准数据包随基础安装而来。只需键入
pkg列表

在octave控制台中显示所有已安装的软件包。在我的例子中,结果列表以这些行开始

Package Name         | Version | Installation directory
---------------------+---------+-----------------------
     communications  |   1.2.1 | C:\Octave\OCTAVE~1.1\share\octave\packages\communications-1.2.1
            control  |   3.0.0 | C:\Octave\OCTAVE~1.1\share\octave\packages\control-3.0.0
     data-smoothing  |   1.3.0 | C:\Octave\OCTAVE~1.1\share\octave\packages\data-smoothing-1.3.0
           database  |   2.4.2 | C:\Octave\OCTAVE~1.1\share\octave\packages\database-2.4.2
          dataframe  |   1.1.0 | C:\Octave\OCTAVE~1.1\share\octave\packages\dataframe-1.1.0
...
要以编程方式获取包信息,请使用

[dummy,info]=pkg('list');
info
是包含包信息的结构单元数组。例如,您可以阅读有关名称和负载状态的信息:

>> info{1}.name
ans = signal
>> info{1}.loaded
ans = 0
要获取有关软件包功能的帮助,请在命令行中输入
help pgk
。此帮助当前(Octave 5.1)未包含在html文档中。这意味着
doc help
不显示此帮助页面


。TL;DR:
pkg列表
显示已安装的软件包,只有
-forge
选项“下载”并安装软件包,没有
-forge
它们是使用lokal文件安装的。如果要在安装时显示状态,请使用
-verbose
下载时是否自动安装所有软件包?因为我看到了一个大约30个的列表,我肯定没有下载。您确定这不是所有可用软件包的列表吗?一些发行版,如windoze的官方MXE安装程序,已经包含了大多数forge软件包,并且它们与核心应用程序一起安装。如果您使用windows安装程序,则所有软件包都可以使用。一个
pkg列表
将向您显示其中的内容,
pkg load pgkname
将加载它以供使用。如果列表为空,就像使用windows zip安装程序一样,
pkg rebuild
将重新扫描packages文件夹并将新列表放在一起。因此,如果我想在包中使用call函数,即使已经安装,我也必须先“加载”它?我不确定MATLAB是否曾经以这种方式工作过,它只是“如果下载了它,我可以称之为”lolg使用pkg列表,我可以用眼睛阅读列表,但在程序中并不容易。结构不是那么简单,我无法找到如何正确索引表单元格以查找“包名”,并检查是否有星号或其他“已加载”状态指示。函数调用
[dummy,info]=pkg('list')
在结构的单元数组中很好地提供了所有信息。您可以使用诸如
info{1}.name
之类的命令遍历info以获取名称,或使用
info{1}.loaded
获取包的名称和状态。顺便问一下:为什么需要检查包的状态。通常只要在需要的函数中发出
pkg load…
就足够了。如果包已经加载,执行时间相对较短。是的,当我知道确切的索引时,我可以。但使用“:”并将其替换为字符串比较函数(在我看来)似乎不可能使用简单的{}索引。我得到“cs列表无法进一步索引”。所以我必须遍历循环中的每个单元格,并有条件地检查“.loaded”字段。这并不像八度音阶通常允许的那样优雅。而且没有这么快,所以在每个程序周期中执行load之前检查加载状态没有任何好处。