类中未定义的函数或变量

Posted

技术标签:

【中文标题】类中未定义的函数或变量【英文标题】:undefined function or variable in class 【发布时间】:2014-04-18 21:07:41 【问题描述】:

如何输出类属性以便在 MATLAB 的终端中访问?在我的例子中,ClassA 存储 p 数组并显示如下输出:

 ClassA with properties:

    p: [3x3 double]

但是当我想访问数组时,它总是说未定义的函数或变量。虽然是public

我的代码:

classdef Input
    properties
        p
    end
    methods
        function obj = Input()
            [obj.p] = input('Enter array like [a b c; d e f;]');
        end
    end
end

【问题讨论】:

请使用正确的缩进代码(在你的matlab编辑器中按ctrl+I),这样更容易阅读。 【参考方案1】:

您可能需要清除所有Input 类实例和rehash 路径以更新类的定义。

我明白了:

>> myIn = Input;
Enter array like [a b c; d e f;][1 2 3; 4 5 6]
>> myIn
myIn = 
  Input with properties:

    p: [2x3 double]
>> myIn.p
ans =
     1     2     3
     4     5     6

【讨论】:

你非常正确,请告诉我是否有任何其他方法,例如某些属性访问方法,可以将其设为默认值,就像我在我的情况下输入 p 一样,它显示了价值。 ? 我需要这样做,因为我也在使用 eval 处理动态变量,在你的情况下,它无法访问它。我需要一个公开的并自动存储在终端变量中的方法。 我不确定我是否完全理解,但您可以在properties (p = [1 2 3; 4 5 6];) 中设置一个默认值,并在构造函数中放入逻辑以拒绝输入,如果没有(只是 Enter)是收到 (xx = input('Enter array like [a b c; d e f;]'); if ~isempty(xx), obj.p = xx; end) @AhsanAli 我不确定你是否从我上次的评论中得到了你需要的东西,但我很高兴你接受了答案。如果它有帮助,upvotes 也表示赞赏。谢谢! :) 是的,它很有用,我对此非常满意。 :)【参考方案2】:

当您使用input 时,您必须输入有效的matlab 代码。您的命令要求输入类似[a b c; d e f;],但变量 a-f 是未知的。如果您打算创建一个 char 数组,请使用 ['abc';'def']

【讨论】:

不,我不打算创建 char 数组,我想要双精度数据类型值,这种情况我该怎么办?

以上是关于类中未定义的函数或变量的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB R2015a 中未定义的函数或变量“fplot3”

python类中未定义函数名[重复]

未定义函数或变量 'O'。怎么解决

VBA的宏显示“子过程或函数未定义”

pdo 变量在 mysql 函数中未定义

JBuilder中未定义的局部变量或方法“json”