System object とは
System object™ は、特殊な MATLAB® オブジェクトです。多くのツールボックスには System object が含まれています。System object は入力が時間経過とともに変化する動的システムを実装およびシミュレーションするために特別に設計されています。多くの信号処理システム、通信システムおよび制御システムは動的です。動的システムでは、出力信号の値は入力信号の瞬間的な値とシステムの過去の動作の両方に依存します。System object は内部状態を使用してこの過去の動作を保管し、次の計算ステップで使用します。このため、System object はビデオやオーディオ処理システムなどのセグメント内の大規模なデータ ストリームを処理する反復的な計算に対して最適化されています。ストリーミング データの処理機能により、メモリに大量のデータを保存せずに済むという利点がもたらされます。ストリーミング データの使用により、ループを効率的に使用するシンプルなプログラムを使用できます。
たとえば、ファイルからデータを読み取り、このデータにフィルターを適用し、フィルター処理された出力を別のファイルに書き込むシステムに System object を使用することができます。一般的には、各ループ反復で、指定した量のデータがフィルターに渡されます。ファイル リーダー オブジェクトは、状態を使用してファイル内で次にデータの読み取りを始める位置を追跡します。同様に、ファイル ライター オブジェクトでも、データが上書きされないように、出力ファイルに最後にデータを書き込んだ位置が追跡されます。フィルター オブジェクトではフィルター処理が適切に実行されるようにフィルターの内部状態が維持されます。次の図は単ループのシステムを表しています。
これらの利点により、System object は、ストリーミング データの処理に適しています。
多くの System object では以下の機能がサポートされています。
固定小数点演算 (Fixed-Point Designer™ ライセンスが必要)
C コードの生成 (MATLAB Coder™ または Simulink® Coder のライセンスが必要)
HDL コードの生成 (HDL Coder™ ライセンスが必要)
実行可能ファイルまたは共有ライブラリの生成 (MATLAB Compiler™ ライセンスが必要)
メモ
製品のドキュメンテーションで、使用する特定の System object を固定小数点、コード生成、および MATLAB Compiler がサポートしていることを確認してください。
System object はデータの処理に少なくとも次の 2 つのコマンドを使用します。
オブジェクトの作成 (
fft256 = dsp.FFT
など)オブジェクトからのデータの実行 (
fft256(x)
など)
作成を実行から分離することで、異なる設定ごとに永続的で再利用可能な複数のオブジェクトを作成できます。このアプローチを使用すると、入力の確認と検証の反復を防ぐことができるだけでなく、プログラミング ループ内で簡単に使用することができるため、全体的なパフォーマンスが向上します。それとは対照的に、MATLAB 関数は、関数の呼び出しのたびにパラメーターを確認しなければなりません。
システム ツールボックスで提供される System object に加えて、独自の System object も作成できます。System object の作成を参照してください。
System object の実行
System object を実行して、そのアルゴリズムによって定義されている演算を実行するには、オブジェクトを関数のように呼び出します。たとえば、dsp.FFT
System object を使用し、長さ 1024 を指定し、dft
という名前を付けて FFT オブジェクトを作成するには、次を使用します。
dft = dsp.FFT('FFTLengthSource','Property','FFTLength',1024);
x
で実行するには、次を使用します。dft(x);
asysobj()
を指定します。System object を実行すると、初期化、オブジェクトの状態の処理など、データ処理に関連するその他の重要なタスクも実行されます。
メモ
System object を実行する代替方法は、関数 step
を使用することです。たとえば、dft = dsp.FFT
を使用して作成されたオブジェクトの場合、step(dft,x)
を使用して実行できます。
System object の関数
System object を作成したら、さまざまなオブジェクト関数を使用してデータを処理したり、オブジェクトからの情報またはオブジェクトに関する情報を取得します。関数を使用するための構文は <object function name>(<system object name>)
で、必要に応じて入力引数を追加します。たとえば、txfourier = dsp.FFT
で、txfourier
が割り当てた名前である場合、reset(txfourier)
を使用して関数 reset
を呼び出します。
共通のオブジェクト関数
以下のオブジェクト関数はすべての System object でサポートされます。関数が特定のオブジェクトに適用されない場合は、その関数を呼び出してもオブジェクトに影響しません。
関数 | 説明 |
---|---|
オブジェクト関数の実行、または step | オブジェクトを実行して、そのオブジェクトによって定義されたアルゴリズムを使用してデータを処理します。 例: オブジェクト
この処理の一環として、オブジェクトは必要に応じてリソースを初期化し、出力を返し、オブジェクト状態を更新します。実行中は、調整可能なプロパティのみを変更できます。System object の両方の実行方法によって、通常の MATLAB 変数が返されます。 |
release | リソースを解放し、System object のプロパティ値および System object の使用中に制限される追加の特性の変更を可能にします。 |
reset | System object をそのオブジェクトの初期値にリセットします。 |
nargin | System object のアルゴリズム定義が受け入れる入力の数を返します。アルゴリズム定義に varargin が含まれる場合、nargin 出力は負になります。 |
nargout | System object のアルゴリズム定義が受け入れる出力の数を返します。アルゴリズム定義に varargout が含まれる場合、nargout 出力は負になります。 |
clone | 同じプロパティ値をもつ同じデータ型の別のオブジェクトを作成します。 |
isLocked | オブジェクトが既に呼び出され、オブジェクトに対して release をまだ呼び出していないかどうかを示す論理値を返します。 |
isDone | matlab.system.mixin.FiniteSource から継承するソース オブジェクトのみに適用されます。データ ファイルの終端に到達したかどうかを示す論理値を返します。特定のオブジェクトにデータ終了機能がない場合、この関数の値は常に false を返します。 |