Main Content

サンプルベースおよびフレームベースの概念

このトピックでは、まず、サンプルとフレーム、サンプル時間 (サンプル周期とも呼ばれる)、サンプル レート、フレーム周期、フレーム レートなどの基本的な概念を、すべて Simulink® モデルのコンテキストに照らして定義します。次に、信号の生成、サンプルベース モードとフレームベース モードでの信号処理について説明し、フレームベース処理の利点についても簡単に解説します。

サンプル レートとフレーム レート

サンプルとフレーム

サンプルとは、ある特定の時点の信号の値または値のセット (マルチチャネル信号) のことです。フレームとは、バッファーされたサンプルを連続して積み上げたベクトルまたは行列 (マルチチャネル信号) のことです。フレームとサンプルはどちらも行列にできますが、フレームの場合は最初の次元が時間領域として解析され、2 番目の次元がチャネルとして解析されます。

サンプル時間 (サンプル周期)

ブロックのサンプル時間 Ts は、ブロックがシミュレーション中に出力を生成し、必要に応じて内部状態を更新するタイミングを示すパラメーターです。サンプル時間とは、フレーム内の個々のサンプル間の時間間隔のことです。

サンプル レート

信号のサンプル レートとは、サンプル時間 (サンプル周期) Ts の逆数、つまり 1/Ts のことです。

ほとんどの場合、Simulink モデルを構築する際には、ソース ブロックにのみサンプル レートを設定する必要があります。Simulink は、ソース ブロックに接続されたブロックの適切なサンプル レートを自動的に計算します。

フレーム周期、およびフレーム周期とサンプル周期の関係

フレーム周期 Tf はサンプル時間 Ts とフレーム サイズ M の積で与えられ、次の式を使用して表されます。

Ts=Tf/M

フレーム レート

信号のフレーム レートとは、フレーム周期 Tf の逆数であり、1/Tf を使用して表すことができます。

次の図は、フレーム サイズ M が 4、フレーム周期 Tf が 1 秒の単一チャネル信号を示しています。したがって、サンプル周期 Ts は 1/4、つまり 0.25 秒となります。

Sequence of frames at t = 0, t = 1, t = 2, and t = 3.

ほとんどの場合、シーケンスのサンプル時間 Ts の方が重要であり、フレーム レートは単に、その信号に対して選択したフレーム サイズの結果です。特定のサンプル時間を持つシーケンスのフレーム サイズを大きくすると、フレーム レートが遅くなります。その逆も同様です。

入出力サンプルとフレーム周期

Simulink では、ブロックの入出力に異なるレートを設定できます (レート変換ブロック)。ブロックの入出力におけるフレーム周期とフレーム レートは、サンプル時間と信号のフレーム サイズに基づいて計算されます。ほとんどの場合、Simulink モデルを構築する際には、ソース ブロックにのみサンプル レートを設定する必要があります。Simulink は、ソース ブロックに接続されたブロックの適切なサンプル レートを自動的に計算します。

信号の "入力フレーム周期" (Tfi) とは、ブロックへの連続するフレーム入力間の時間間隔のことです。同様に、"出力フレーム周期" (Tfo) とは、ブロックが出力端子でフレームのベクトルまたは行列の値を更新する時間のことです。

具体的には、入力 (Tsi) と出力 (Tso) のサンプル時間は、それぞれのフレーム周期に対して次の式で表されます。

Tsi=Tfi/Mi

Tso=Tfo/Mo

ここで、Mi と Mo はそれぞれ入力と出力のフレーム サイズです。

数学的には、入力フレーム レートは 1/Tfi で求められ、出力フレーム レートは 1/Tfo で求められます。

信号のフレーム レートは、色分けとタイミング凡例を使用して特定できます。詳細については、Inspect Sample and Frame Rates in Simulinkを参照してください。直接レート変換とフレーム再バッファリングを使用して、信号のフレーム レートとサンプル レートを変更できます。例については、Convert Sample and Frame Rates in Simulink Using Rate Conversion BlocksConvert Sample and Frame Rates in Simulink Using Frame Rebuffering Blocksを参照してください。

可変サイズ信号と可変サンプル レート

シミュレーション中にフレーム サイズ M が変化する信号は、可変サイズ信号と呼ばれます。信号のフレーム周期 Tf はシミュレーション時は常に固定であるため、可変サイズの信号を使用すると、信号のサンプル時間 Ts が式 Ts=Tf/M に従って変化し、その結果としてサンプル レート 1/Ts が変化します。可変サイズの信号を生成および処理する方法を示す例については、可変サイズ正弦波信号のローパス フィルター処理およびDecimate Variable-Size Sinusoidal Signalを参照してください。

システム内の可変サンプル レートをモデル化するには、可変サイズ信号を使用します。

信号の生成

From Multimedia File ブロックや Signal From Workspace ブロックなどの一部のソース ブロックは、指定したパス内のファイルや MATLAB® ワークスペースから信号をインポートできます。Colored Noise ブロックや Sine Wave ブロックなどのいくつかのブロックは、事前定義したアルゴリズムを使用して信号を生成します。DSP System Toolbox™ で信号を生成するブロックの完全なリストについては、信号の生成カテゴリのブロックのリストを参照してください。これらのブロックのほとんどは、[フレームあたりのサンプル数] パラメーターを使用して生成する各フレーム (列) 内のサンプル数を制御できます。このパラメーターを 1 より大きい値に設定すると、ブロックは各フレーム (列) に複数のサンプルをもつ信号を生成します。これらのブロックを使用して信号を生成する方法を説明する例については、Create Signals for Sample-Based Processingフレームベースの処理用の信号の作成を参照してください。

これらのブロックによって生成された信号は、DSP System Toolbox のいくつかの信号処理アルゴリズム ブロックを使用してさらに処理できます。これらの処理ブロックは、[入力処理] パラメーターに基づいて、一度に 1 つのサンプル (サンプルベースの処理) または一度に 1 つのフレーム (フレームベースの処理) の信号を処理します。

サンプルベースの処理とフレームベースの処理

Simulink 環境では、サンプルベース モードとフレームベース モードのどちらで信号を処理するかを選択できます。ただし、MATLAB 環境では、System object は常にフレームを処理します。MATLAB はサンプルベースの処理を実行しません。

次の 2 つのセクションでは、サンプルベースの処理とフレームベースの処理について、さらに詳しく説明します。

サンプルベースの処理とは

サンプルベースの処理では、ブロックは一度に 1 つのサンプルの信号を処理します。入力信号の各要素は別々のチャネル内の 1 つのサンプルを表します。入力信号が行列の場合、各要素は同じ時間に対応します。たとえば、サンプルベースの処理の視点からは、次の 3 行 2 列の行列に 6 つの独立したチャネルそれぞれの最初のサンプルが含まれています。

3-by-2 matrix containing 1 at each index. Each element represents a channel. Altogether, the matrix shows 6 channels at t = 0.

サンプルベースの処理を実行するようにブロックを構成すると、ブロックはスカラー入力を単一チャネル信号として解釈します。同様に、ブロックは M 行 N 列の行列を M*N 個の独立したチャネルをもつマルチチャネル信号として解釈します。たとえば、サンプルベースの処理では、ブロックは次の一連の 3 行 2 列の行列を 6 チャネル信号として解釈します。

Three 3-by-2 matrices at t = 0, t= 1, and t = 2, respectively. At t = 0, all elements equal 1. At t = 1, all elements equal 2. At t = 2, all elements equal 3.

フレームベースの処理とは

フレームベースの処理では、ブロックと System object がフレームのデータを処理します。データの各フレームには、連続して積み上げられたサンプルが含まれています。各チャネルは入力信号の列によって表されます。たとえば、フレームベースの処理の視点からは、この 3 行 2 列の行列には 2 チャネルあり、それぞれ 3 つのサンプルが含まれています。

フレームベースの処理を実行するようにブロックを構成すると、ブロックは M 行 1 列のベクトルをフレームごとに M 個のサンプルが含まれる単一チャネル信号として解釈します。同様に、ブロックは M 行 N 列の行列を N 個の独立したチャネルとチャネルごとに M 個のサンプルを持つマルチチャネル信号として解釈します。たとえば、フレームベースの処理では、ブロックはこの一連の 3 行 2 列の行列をフレーム サイズが 3 の 2 チャネル信号として解釈します。

フレームベースの処理の利点

フレームベースの処理では、アルゴリズムが複数のサンプルを一度に処理するため、オーバーヘッドが少なくなり、シミュレーションのパフォーマンスが向上します。また、リアルタイムのデジタル信号処理システムによって信号データのストリームがどのように処理されるかを忠実に模倣することで、実際の動作をハードウェアで正確にシミュレートできます。Simulink 環境でのフレームベース処理を比較し、その利点を示す例については、Compare Speed Performance in Frame-Based Processing Mode Using Simulink Profilerを参照してください。フレームベースの処理を実行するには、DSP System Toolbox ライセンスを所有していなければなりません。

フレームベースの処理では、初期フレームのバッファリングに固有のラグが原因で、ある程度のレイテンシが処理に発生することに注意してください。ただし、多くの場合、許容できないレイテンシを発生させずにスループットを向上するフレーム サイズを選択できます。詳細については、Delay and Latencyを参照してください。

関連する例

詳細