类中未定义的函数或变量
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 数组,我想要双精度数据类型值,这种情况我该怎么办?以上是关于类中未定义的函数或变量的主要内容,如果未能解决你的问题,请参考以下文章