【问题标题】:Undefined function or variable 'DataMatrix'未定义的函数或变量“DataMatrix”
【发布时间】:2017-06-08 18:40:39
【问题描述】:

我试图通过调用 DataMatrix() 函数来创建一个 DataMatrix 变量。 但该功能不存在。如果我输入这个:

>> DataMatrix

我收到此错误消息:

Undefined function or variable 'DataMatrix'.

我确实安装了 Bioinformatics Toolbox,我在 Mac 上的版本是 2016b

有什么想法吗?

【问题讨论】:

  • 我认为唯一的解释是您的工具箱没有正确安装(例如不在MATLAB path上)。如果没有更多信息,我们无能为力。
  • @gnovice 可能是巧合,但我可以重现他的错误。使用exist 也会得到0。使用制表符完成名称也没有给我任何东西。此外,help DataMatrix 提供DataMatrix not found,但doc DataMatrix 打开其文档。我还可以使用 Bioinformatics Toolbox 的其他功能重现此错误,例如 dmarrayfundmwrite 等(Win10 上的 R2016a)
  • 我已经投票重新打开,这是一个合法的问题,与“未定义的功能”或“安装错误的包”无关。 DataMatrix 类包含在“包”/命名空间中,需要相应地访问。在我的安装中,它是 bioma 包,其中包含一个 data 子包,其中包含该类。要创建一个实例,您必须输入D = bioma.data.DataMatrix([1,2;3,4])import bioma.data.DataMatrix D = DataMatrix([2,3;4,5]) 之类的内容。您的可能相同,但请检查您的安装以防万一。如果重新打开,我会提供更多详细信息。
  • 请注意,@Tasos 所说的是clearly written in the documentation,我通过谷歌搜索“matlab datamatrix”找到了它。

标签: matlab datamatrix


【解决方案1】:

正如@Andras 在 cmets 中提到的,导入和使用这个类的过程已经是 mentioned in the documentation for the class (虽然如果你错过了它可能会被原谅,因为它不在处理页面的顶部语法)。


tl;dr 版本是您应该访问类构造函数,例如:

D = bioma.data.DataMatrix(...);

或者,import先从包/命名空间中的类,然后直接使用,即:

import bioma.data.DataMatrix;
D = DataMatrix(...);

说明

首先需要此步骤的原因是因为此类包含在“包”(也称为“命名空间”)中。阅读 matlab 文档中名为“Packages Create Namespaces”的部分,了解更多这意味着什么。

但是,原则上归结为这样一个事实:如果您有一个名称带有 + 前缀的文件夹,那么它充当其中包含的函数的命名空间。

因此,如果您的路径上有一个名为 +MyPackage 的文件夹,并且其中包含一个名为 myfunction.m 的函数 m 文件(但这不在您的路径中),那么您可以在 matlab 终端中访问此函数通过输入MyPackage.myfunction()

或者,你可以从那个包/命名空间import MyPackage.myfunction,然后直接使用myfunction

所以,回到DataMatrix,你会看到如果你搜索类定义在你的matlab文件夹中的位置,你会在这里找到它:

./toolbox/bioinfo/microarray/+bioma/+data/@DataMatrix/DataMatrix.m

大概./toolbox/bioinfo/microarray 已经在你的路径中了。

bioma 包/命名空间在你的路径中,你可以访问它下面的data 包/命名空间,然后通过bioma.data.DataMatrix 访问DataMatrix 的类定义。


PS:另外,文件夹名称前的“@”前缀表示一个类文件夹,包含构造函数和类方法。如果此“@folder”在您的路径中(或导入等),那么这意味着您可以访问底层构造函数。这是 matlab's old object-oriented style 的残余,在引入 classdef 关键字之前。如果您有兴趣,可以阅读更多关于类目录here 的信息。

【讨论】:

  • 谢谢!您的导入 bioma.data.DataMatrix;是我一直在寻找的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2013-09-27
  • 2015-12-24
  • 1970-01-01
相关资源
最近更新 更多