未定义函数或变量 'DataMatrix'
Undefined function or variable 'DataMatrix'
我试图通过调用 DataMatrix() 函数来创建 DataMatrix 变量。
但是这个功能不存在。如果我输入:
>> DataMatrix
我收到此错误消息:
Undefined function or variable 'DataMatrix'.
我确实安装了 Bioinformatics Toolbox,我的版本是 Mac
上的 2016b
有什么想法吗?
正如@Andras 在评论中提到的,导入和使用此 class 的过程已经 mentioned in the documentation for the class(尽管如果您错过了它可能会被原谅,因为它是不在处理语法的页面顶部)。
tl;dr 版本是您应该访问 class 构造函数,例如:
D = bioma.data.DataMatrix(...);
或者,import先从包/命名空间中取出class,然后直接使用,即:
import bioma.data.DataMatrix;
D = DataMatrix(...);
说明
你首先需要这一步的原因是因为这个 class 包含在一个 "package" (a.k.a.a "namespace") 中。阅读 matlab 文档中名为“Packages Create Namespaces”的部分,了解更多这意味着什么。
但是,原则上归结为这样一个事实:如果您有一个名称带有 +
前缀的文件夹,那么它就充当其中包含的函数的名称空间。
因此,如果您的路径上有一个名为 +MyPackage
的文件夹,并且其中包含一个名为 myfunction.m
的函数 m 文件(但这不在您的路径中),那么您可以访问通过键入 MyPackage.myfunction()
在 matlab 终端中使用此函数。
或,你可以从那个包/命名空间import MyPackage.myfunction
然后直接使用myfunction
。
所以,回到 DataMatrix
,你会发现如果你搜索 class 定义在你的 matlab 文件夹中的位置,你会在这里找到它:
./toolbox/bioinfo/microarray/+bioma/+data/@DataMatrix/DataMatrix.m
并且大概 ./toolbox/bioinfo/microarray
已经在您的路径中了。
即bioma
package/namespace 在你的路径中,你可以访问它下面的 data
package/namespace,然后是 DataMatrix
的 class 定义做 bioma.data.DataMatrix
。
PS:此外,文件夹名称前的“@”前缀表示一个class文件夹,包含构造函数和class方法。如果此“@folder”在您的路径中(或导入等),则这意味着您可以访问底层构造函数。如果您有兴趣,这是 matlab's old object-oriented style, before the classdef
keyword was introduced. You can read more about class directories here 的残余。
我试图通过调用 DataMatrix() 函数来创建 DataMatrix 变量。 但是这个功能不存在。如果我输入:
>> DataMatrix
我收到此错误消息:
Undefined function or variable 'DataMatrix'.
我确实安装了 Bioinformatics Toolbox,我的版本是 Mac
上的 2016b有什么想法吗?
正如@Andras 在评论中提到的,导入和使用此 class 的过程已经 mentioned in the documentation for the class(尽管如果您错过了它可能会被原谅,因为它是不在处理语法的页面顶部)。
tl;dr 版本是您应该访问 class 构造函数,例如:
D = bioma.data.DataMatrix(...);
或者,import先从包/命名空间中取出class,然后直接使用,即:
import bioma.data.DataMatrix;
D = DataMatrix(...);
说明
你首先需要这一步的原因是因为这个 class 包含在一个 "package" (a.k.a.a "namespace") 中。阅读 matlab 文档中名为“Packages Create Namespaces”的部分,了解更多这意味着什么。
但是,原则上归结为这样一个事实:如果您有一个名称带有 +
前缀的文件夹,那么它就充当其中包含的函数的名称空间。
因此,如果您的路径上有一个名为 +MyPackage
的文件夹,并且其中包含一个名为 myfunction.m
的函数 m 文件(但这不在您的路径中),那么您可以访问通过键入 MyPackage.myfunction()
在 matlab 终端中使用此函数。
或,你可以从那个包/命名空间import MyPackage.myfunction
然后直接使用myfunction
。
所以,回到 DataMatrix
,你会发现如果你搜索 class 定义在你的 matlab 文件夹中的位置,你会在这里找到它:
./toolbox/bioinfo/microarray/+bioma/+data/@DataMatrix/DataMatrix.m
并且大概 ./toolbox/bioinfo/microarray
已经在您的路径中了。
即bioma
package/namespace 在你的路径中,你可以访问它下面的 data
package/namespace,然后是 DataMatrix
的 class 定义做 bioma.data.DataMatrix
。
PS:此外,文件夹名称前的“@”前缀表示一个class文件夹,包含构造函数和class方法。如果此“@folder”在您的路径中(或导入等),则这意味着您可以访问底层构造函数。如果您有兴趣,这是 matlab's old object-oriented style, before the classdef
keyword was introduced. You can read more about class directories here 的残余。