0

cfitオブジェクトが functions\classes の間で行き来するコードがあり、ある時点でインスタンス化してアクセスできるように、フィットに関する情報 (つまり、その名前) を含む「タグ」が必要です。後で必要なときにいつでも。

理想的には、これはオブジェクトのすぐ内側にあるので、情報にアクセスする必要があるときはいつでも、appdata追加のベクトル\セルをドラッグする必要なく (または中に) 利用できます。

試みと考察

cfit通常、このデータを含むプロパティを単純にサブクラス化して追加します。cfitただし、 (下記参照)の宣言は、それがSealedであるため、サブクラス化できないことを示しています。

classdef (Sealed = true) cfit < fittype

または、現在のオブジェクトで使用されていないプロパティを「ハイジャック」し、それを使用して必要なデータを保存することもできます (技術的な問題ではありませんが、これは、これらのプロパティを使用すべきであるという開発者の警告を無視することと同じです)。触れないでください)。

さらに、上記から、classdefこれがそのサブクラスでfittypeあり、この目的に使用できるいくつかのプロパティ\メソッドを持っている可能性があることもわかります。

最後に、疑問が残ります - 追加のデータを保存するのに最適な場所はどこですか? set\get の両方に便利です (便利なということは、ループ内でアクセスしたい場合に使用する必要がないことを意味します)。eval())、cfitオブジェクトの通常の操作を妨げませんか?

4

2 に答える 2

1

.p機能しているように見える 1 つの方法は、オブジェクトの構造にアクセスし、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

subclasscfitではなく、新しいクラスを作成し、cfitオブジェクトをプロパティとして保存し、タグを別のプロパティとして保存します。

于 2015-03-01T14:31:03.027 に答える