【发布时间】:2016-11-14 13:03:41
【问题描述】:
我在使用 matlab 时遇到了一些问题。我正在使用 b 样条。有时我想使用实际的样条曲线,而其他时候我只想使用所谓的基函数。在不深入研究 b 样条理论的情况下,实际的区别在于,当我想使用 b 样条时,我需要一个额外的方法和属性。我希望通过在构造函数中传递它来初始化这个属性。
到目前为止,我所拥有的(删除了大多数不相关的方法和属性)希望大致展示了我想要的行为:
bsplinespace.m:
classdef bsplinespace < handle
properties
p % polynomial degree
end
methods
function result = bsplinespace(p)
result.p = p;
end
end
end
bspline.m:
classdef bspline < bsplinespace
properties
controlpoints
end
methods
function result = bspline(p, controlpoints)
result.controlpoints = controlpoints;
end
function result = getp(this)
result = this.p;
end
end
end
但是,在这种情况下,bspline 构造函数调用 bsplinespace 构造函数而不传递任何参数,导致它崩溃:
Not enough input arguments.
Error in bsplinespace (line 8)
result.p = p;
Error in bspline (line 7)
function result = bspline(p, controlpoints)
更明确地说,我想要的是:
- 一个类 bsplinespace,它有一个接受一个参数 p 的构造函数
- 类bspline,相同,但多了一个属性和方法
有没有优雅的方法来实现这个?
【问题讨论】:
-
在 bspline 构造函数中为什么不自己调用超类呢? "结果 = 结果@bsplinespace(p)"
-
我不知道这会导致构造函数不再在没有参数的情况下被调用。这比我的解决方案好,如果你添加这个作为答案,我会接受它!
-
山姆·罗伯茨的速度似乎更快
标签: matlab oop constructor