Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

クラスによるハードウェアの表現

目的

この例は、オプチカル マルチプレックス カードを表すクラスを実装します。通常、これらのカードには複数の入力端子と 1 つの出力端子があります。MuxCardクラスでは、端子を端子の名前と端子のデータ レートで表します。マルチプレックス カードの出力レートは、入力端子データ レートの総和です。

int32 から派生する理由

MuxCardクラスは、入力端子のデータ レートが 32 ビットの整数で表されるため、int32クラスから派生します。MuxCardクラスはint32クラスのメソッドを継承し、これによってこのサブクラスの実装が簡単になります。たとえば、数値配列インデックス付けと算術演算はMuxCardオブジェクトに機能します。その理由は、このクラスがこれらの操作をint32クラスから継承するからです。

実装

以下はMuxCardクラスの定義です。入力端子のデータ レートで、クラスのint32の部分を初期化していることに注意してください。

classdefMuxCard < int32propertiesInPutNames OutPutNameendproperties(Dependent = true) OutPutRateendmethodsfunctionobj = MuxCard (inptnames inptrates, outpname) obj = obj@int32(inptrates); obj.InPutNames = inptnames; obj.OutPutName = outpname;endfunctionx = get.OutPutRate(obj) x = sum(obj);endfunctionx = subsref(card, s)ifstrcmp(s(1).type,'.') base = subsref@int32(card, s(1));ifisscalar(s) x = base;elsex = subsref(base, s(2:end));endelsex = subsref(int32(card), s);endendendend

MuxCard オブジェクトの作成

このコンストラクターは、3 つの引数を取ります。

  • inptnames— 入力端子の名前の cell 配列

  • inptrates— 入力端子レートのベクトル

  • outpname— 出力端子の名前

omx = MuxCard({'inp1','inp2','inp3','inp4'},[3 12 12 48],'outp')
omx = 1x4 MuxCard array with properties: InPutNames: {'inp1' 'inp2' 'inp3' 'inp4'} OutPutName: 'outp' OutPutRate: 75 int32 data: 3 12 12 48

int32 のメソッドの呼び出し

MuxCardオブジェクトをint32値の配列のように使用します。たとえば、次のインデックス ステートメントはオブジェクトのデータにアクセスして、レート12をもつ入力端子の名前を判別します。

omx.InPutNames(omx==12)
ans = 'inp2' 'inp3'

インデックス ステートメントは logical 配列のインデックスを生成します。

omx == 12
ans = 0 1 1 0

MuxCardオブジェクトのインデックスを指定することにより、入力端子のレートのint32のベクトルにアクセスします。

omx(1:2)
ans = 3 12

OutPutRateプロパティの get アクセス メソッドで、出力端子のレートの和を求めるためにsumを使用します。

omx.OutPutRate
ans = 75

関連するトピック