Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Buffer

入力シーケンスの小さいフレーム サイズまたは大きいフレーム サイズへのバッファリング

  • Buffer block

ライブラリ:
DSP System Toolbox / Signal Management / Buffers

説明

Buffer ブロックは常にフレームベースの処理を実行します。ブロックは入力の各列にデータを再分散して異なるフレーム サイズで出力を生成します。信号をより大きいフレーム サイズにバッファリングすると、入力よりも "遅い" フレーム レートの出力が得られます。たとえば、次の図のようなスカラー入力を検討します。

信号をより小さいフレーム サイズにバッファリングすると、入力よりも "速い" フレーム レートの出力が得られます。たとえば、次の図のようなスカラー出力を検討します。

ブロックによってオーバーラップのないバッファーの出力 "フレーム サイズ" と "フレーム レート" が調整されるため、信号のサンプル周期は次のように入力と出力の両方で同じになっています。Tso = Tsi

このブロックは、ブロックの入力レートと出力レートが同じ場合は、Triggered Subsystem をサポートします。

端子

入力

すべて展開する

単一チャネル信号をバッファリングするには、スカラーまたは列ベクトルを入力します。マルチチャネル信号をバッファリングするには、行ベクトルまたは行列を入力します。単一チャネル信号をバッファリングするには、サイズが Mi 行 1 列のスカラーまたは列ベクトルを入力します。ここで、Mi は入力フレーム サイズです。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point
複素数のサポート: あり

出力

すべて展開する

バッファリングした入力信号。ベクトルまたは行列として返されます。

入力が単一チャネル信号の場合、次のようになります。

  • 1 行 1 列 (スカラー) — 出力は、Mo 行 1 列のベクトル。

  • Mi 行 1 列 (列ベクトル) — 出力は、Mo 行 1 列のベクトル。

ここで、

  • Mi — 入力フレーム サイズ

  • Mo[出力バッファー サイズ] パラメーターの値

入力フレーム周期は Mi · Tsi です。ここで Tsi は入力サンプル周期です。出力フレーム周期は (MoL)Tsi です。ここで L[バッファー オーバーラップ] パラメーターの値、Tsi は入力サンプル周期です。[バッファー オーバーラップ] パラメーターを Mo – 1 に設定すると、出力フレーム周期が入力サンプル周期と等しくなります。

入力がマルチチャネル信号の場合、次のようになります。

  • 1 行 N 列 — 出力は、MoN 列の行列。

  • MiN 列 — 出力は、MoN 列の行列。

ここで、

  • N — 信号のチャネル数

  • Mi — 入力フレーム周期

  • Mo[出力バッファー サイズ] パラメーターの値で、入力フレーム サイズ Mi より大きいまたは小さい場合があります。ブロックは N 個の入力チャネルをそれぞれ個別にバッファリングします。

入力フレーム周期は Mi · Tsi となります。出力フレーム周期は (MoL)Tsi で、[バッファー オーバーラップ]Mo1 の場合にシーケンス サンプル周期と等しくなります。したがって、出力サンプル周期 Tso は次のように、入力サンプル周期 Tsi と関連付けられます。

Tso=(MoL)TsiMi

出力は入力と同じデータ型および実数/複素数をもちます。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point
複素数のサポート: あり

パラメーター

すべて展開する

各チャネルから出力フレームにバッファリングする連続サンプル数 Mo を指定します。

データ型: double | int8 | int16 | int32 | uint8 | uint16 | uint32

サンプル数 L を指定します。連続する出力フレームのそれぞれでオーバーラップまたはアンダーラップする量を指定します。

バッファーでデータをオーバーラップするには、L の値を 0L<Mo の範囲で指定します。ここで、Mo[出力バッファー サイズ] パラメーターの値です。ブロックは現在の出力から L 個のサンプル (列) を取得し、次の出力でそれを繰り返します。オーバーラップする場合、ブロックは MoL の "新しい" 入力サンプルを取得してから、バッファリングされたデータを出力に伝播します。

L<0 の場合、信号をアンダーラップでバッファリングしています。ブロックはバッファーが満杯になると L 個の入力サンプルを破棄し、周期 (MoL)Tsi でバッファーを出力します。それにより、オーバーラップがゼロの場合よりも長くなります。

出力フレーム周期は (MoL)Tsi で、入力シーケンス サンプル周期 Tsi と等しくなります。ここで [バッファー オーバーラップ]Mo1 です。

データ型: double | int8 | int16 | int32 | uint8 | uint16 | uint32

非ゼロ レイテンシの場合のブロックの初期出力値を指定します。スカラー、ベクトルまたは行列のいずれかとして指定します。

ゼロタスク レイテンシに記載されたケースを除くすべてのシングルタスク演算 (Simulink Coder)では、Buffer ブロックのバッファーは [初期条件] パラメーターで指定される値に初期化されます。ブロックはこのバッファーから読み取って最初の D 個の出力サンプルを生成します。ここで、

D={Mo+L(L0)Mo(L<0)

[初期条件] パラメーターの次元は [バッファー オーバーラップ] L と入力が単一チャネルであるかマルチチャネルであるかによって異なります。

  • L0 の場合、[初期条件] パラメーターはスカラーでなければなりません。

  • L=0 の場合、[初期条件] パラメーターはスカラーまたは次のいずれかの制約のあるベクトルにすることができます。

    • 単一チャネル入力の場合、[初期条件] パラメーターは長さが Mo のベクトル (Mi が 1 の場合) または長さが Mi のベクトル (Mo が 1 の場合) にすることができます。

    • マルチチャネル入力の場合、[初期条件] パラメーターは長さが Mo * N のベクトル (Mi が 1 の場合) または長さが Mi * N のベクトル (Mo が 1 の場合) にすることができます。

すべてのマルチタスク演算 (Simulink Coder)では、関数 rebuffer_delay を使用して、Buffer ブロックが指定の組み合わせのバッファー サイズとバッファー オーバーラップに対して生成する遅延の正確な値 (サンプル数) を計算します。

任意のフレーム サイズ間での全般的なバッファリングでは、[初期条件] パラメーターはスカラーでなければなりません。その後、この値は初期出力のすべての要素で繰り返されます。ただし、入力が 1 行 N 列の行ベクトルで、ブロックの出力が MoN 列の行列である特別なケースの場合、[初期条件] は次のいずれかになります。

  • MoN 列の行列

  • 初期出力のすべての列で繰り返される、長さが Mo のベクトル

  • 初期出力のすべての要素で繰り返されるスカラー

出力が 1 行 N 列の行ベクトル、つまり MiN 列の行列をバッファー解除した結果として得られる、特別なケースの場合、[初期条件] は次のいずれかになります。

  • 最初の Mi サンプル時間中に各チャネルに対して順番に出力される Mi サンプルを含むベクトル

  • 初期出力のすべての要素で繰り返されるスカラー

レイテンシと Simulink® タスク モードの詳細については、Excess Algorithmic Delay (Tasking Latency)時間ベースのスケジューリングとコード生成 (Simulink Coder)を参照してください。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point
複素数のサポート: あり

ブロックの特性

データ型

Boolean | double | fixed point | integer | single

直達

いいえ

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

詳細

すべて展開する

拡張機能

バージョン履歴

R2006a より前に導入