0

我有一个代码,其中cfit对象在函数\类之间来回传递,我想要一个“标签”,其中包含一些关于我的适合的信息(即它的名称),这样我就可以在某个时候实例化它并可以访问它以后需要的时候。

理想情况下,这将在对象内部,这样每当我需要访问信息时,它就可以使用,而无需拖动(或拖入appdata)额外的向量\单元格。

尝试与想法

通常,人们会简单地继承cfit并添加一个包含此数据的属性。但是,cfit(见下文)的声明告诉我们它是Sealed,因此不能被子类化。

classdef (Sealed = true) cfit < fittype

或者,我们可以尝试“劫持”一些当前对象未使用的属性并使用来存储所需的数据(这不是技术问题,但这相当于无视开发人员的警告,即这些属性不应该'不可触摸)。

此外,从上面classdef我们还了解到,这是一个子类,fittype它可能具有一些我们可以用于此目的的属性\方法。

最后,问题仍然存在 - 保存我的额外数据位的最佳位置是什么,这样既方便 set\get (方便意味着如果我想在循环中访问它,我不必使用eval()),不干扰cfit物体的正常运行?

4

2 回答 2

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

建议注意:我没有测试此解决方案是否会干扰正常操作。

于 2015-03-01T12:41:37.893 回答
0

而不是 subclass cfit,创建一个新类并将cfit对象存储为属性,以及您的标记作为另一个属性。

于 2015-03-01T14:31:03.027 回答