问题标签 [matlab-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - matlab中类库的全局变量
我matlab
声明了几个类。我如何声明在所有类中都可以看到的常量?
例如:这些常量可以是在所有类的方法中使用的物理常量。首先想到的是使用全局变量。有没有更好的办法?在单独的文件中声明这些常量会很好。
matlab - 我什么时候可以传递函数句柄?
我有一个缓存评估的功能。作为参数之一,它需要一个函数句柄。在某些情况下,函数句柄是不可访问的,我不太明白为什么。下面的示例显示了让我难过的原因:
所以,如果我有一个存储为结构成员的函数句柄,如果它是一层深,我可以很好地传递它,但如果它是两层深则不行。在我的真实用例中,我有一个结构D
,其中包含许多(117)个不同类的实例,所以我实际上有stct.obj.meth
, wherestct
是一个结构,obj
是一个类实例/对象,meth
是一个方法。传递@stct.obj.meth
失败,但如果我分配A = stct.obj
,则传递@A.meth
成功。
在什么情况下我可以将函数句柄作为参数传递,以便它仍然可以在堆栈中访问?
编辑:虽然在上面的用例中,我可以简单地删除@
因为@plus
已经是一个函数句柄。但是,请考虑这里的情况:
在这种情况下,我需要之前...@
A.a.mymeth
matlab - 类方法的输入参数过多错误
我在 MATLAB 中编写了一个类,如下所示:
当我使用这个类的getSize
函数时,它总是报如下错误:
有谁知道为什么?
matlab - 如何在 MATLAB 中创建一组抽象类对象?
例如,假设我创建了一个名为的抽象类Shape
和两个名为的子类Circle
,Rectangle
它们都实现了一个名为Draw
. 我希望能够创建多个Circle
和Rectangle
对象,将它们存储在一个数组中,并Draw
通过遍历数组来调用每个数组对象。
我尝试过类似以下的方法:
形状.m:
圆.m:
矩形.m:
测试.m:
当我尝试运行 test.m 时,我收到以下错误消息:
matlab - 使用 set 方法 MATLAB
我想从同一 matlab 类中的函数更改 Matlab 类中属性的值。即类中的一个函数正在生成一个我想要分配给该类的属性的值。
这是该类的属性:
.....这就是set方法。
现在我想写一些类似的东西:
从另一个函数更新 detTP 属性的值。
我该怎么做?set函数应该怎么写(即现在写对了吗)?以及将新值分配给属性的语法应该如何。
在此先感谢您的帮助!
matlab - 对象不持久
在下面这段代码中,类的析构TdcTestResult
函数在函数结束时被调用add
,所以方法变量mTdcTestResults
将再次变为空。
如何使TdcTestResult
内部实例mTdcTestResults
持久化?
matlab - 为什么当我尝试将类属性分配给属性块中的另一个类属性时,MATLAB 会引发“未定义变量”错误?
如果我运行此代码来创建一个简单的类:
我收到一个错误:
为什么是这样?我在这个最小示例中省略了构造函数,因为 a) 如果我将构造函数放入,错误仍然存在,并且 b) 我在单元测试类中遇到此错误,并且在 MATLAB 2013b 中的此类类中未调用构造函数。
matlab - matlab中的oop范式产生了多少开销
在 matlab 中,每个类方法看起来都像是一个普通方法,其第一个参数是对象本身。
这种范式对于其他 oop 语言(例如 python)是完全可以接受的,因为类是通过引用传递的。另一方面,matlab 默认情况下按值传递对象(句柄类除外)。
从所有这些我推断,即使使用最简单的 setter 函数(或任何其他类方法)也会导致整个对象被复制。
例如,这是 matlab 中某些类方法的签名:
在这种情况下,当我调用 fooObj.myfun(5) (或只是 myfun(fooObj,5))时,matlab 会复制整个 fooObj=foo() 吗?
这不是一个非常大的开销吗?在我看来,为每个类方法(和 setter)复制整个对象似乎非常低效。
我错过了什么吗?在仍然使用 oop 技术的同时,有没有办法在 matlab 中避免这种情况?
我是否必须使用句柄类来防止这种性能开销?
matlab - Matlab无法调用超类方法
我是 Matlab 的新手,在调用超类方法时遇到了一些问题。
我有这个代码:
超类测试1:
子类测试:
继承工作正常;superclasses 函数显示test1
为 的超类test
。但是,当我调用时test2@test1(obj)
,它会返回一个错误:
"@" 在一个方法中,通过method@superclass 调用同名的超类方法。“@”的左操作数必须是方法名。
2test
方法显然存在于超类test1
中,所以我不确定到底出了什么问题。
matlab - MATLAB:当我尝试访问对象的属性时出错
这是它返回的错误:您无法获取 Planet 的 't' 属性。
Problem4dot10(第 12 行)中的错误 name=mercury.t(mercury);
我创建了 getter 函数来返回类行星的属性:
我从文件 Problem4dot10.m 中调用了 getter:
我查看了文档以试图弄清楚。我想做的是创建一个行星类来跟踪行星的位置,并计算行星在下一个时间步的位置。然后它假定新的状态。