将自定义数据(字符串标记)附加到MATLAB cfit对象



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

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

尝试&思想

通常,只需对cfit进行子类化,并添加一个包含此数据的属性。然而,cfit的声明(见下文)告诉我们它是Sealed,因此不能被子类化。

classdef (Sealed = true) cfit < fittype

或者,我们可以尝试";劫持;一些当前对象未使用的属性,并使用it来存储所需的数据(这不是技术问题,但这相当于忽略了开发人员关于不应触摸这些属性的警告)。

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

最后,问题仍然存在-保存额外数据的最佳位置是什么,这样既可以方便地设置\get(方便意味着如果我想在循环中访问它,我不必使用eval()),又不会干扰cfit对象的正常操作?

一种似乎有效的方法是访问cfit对象的.p结构并向其添加任何内容:

之前:

>> 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

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

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

相关内容

  • 没有找到相关文章

最新更新