我有一个代码,其中cfit
个对象在函数\类之间来回传递,我希望有一个"tag",其中包含一些关于我的拟合的信息(即它的名称),这样的我会在某个时刻对其进行实例化,并且可以在以后需要时访问它。
理想情况下,这将在对象内部,因此无论何时我需要访问信息,都可以使用它而无需拖动(或在appdata
)其他矢量\ cells。
通常,只需子类化cfit
并添加包含此数据的属性。但是,cfit
的声明(见下文)告诉我们它是Sealed
,因此无法进行子类化。
classdef (Sealed = true) cfit < fittype
或者,我们可以尝试“劫持”当前对象未使用的某些属性,并使用 it 来存储所需的数据(not that it's a technical problem,但这相当于忽略开发商警告说不应该触及这些属性。)
此外,从上面的classdef
我们也知道这是fittype
的子类,它可能有一些我们可以用于此目的的属性\方法。
最后,问题仍然存在 - 保存我的额外数据的最佳位置是什么,因此设置\ get(方便)意味着方便如果我想在循环中访问它,我不必使用eval()
),并且不会干扰cfit
个对象的正常操作?
答案 0 :(得分:1)
似乎有效的一种方法是访问.p
对象的cfit
结构并添加任何内容:
在:
>> F378
F378 =
Shape-preserving (pchip) interpolant:
F378(x) = piecewise polynomial computed from p
Coefficients:
p = coefficient structure
>> F378.p
ans =
form: 'pp'
breaks: [1x40 double]
coefs: [39x4 double]
pieces: 39
order: 4
dim: 1
F378.p.tag = '3.78';
之后:
F378.p
ans =
form: 'pp'
breaks: [1x40 double]
coefs: [39x4 double]
pieces: 39
order: 4
dim: 1
tag: '3.78'
我从以下错误中找到了这个:
Error using cfit/subsref (line 18)
The name 'probnames' is not a coefficient or a problem parameter. You can only use dot
notation to access the coefficients and problem parameters of a cfit or sfit, for example
'f.p'.
For the current object the properties you can access like this are:
p
建议小心:我没有测试此解决方案是否会影响正常操作。
答案 1 :(得分:0)
而不是子类cfit
,创建一个新类并将cfit
对象作为属性存储,并将您的标记存储为另一个属性。