Main Content

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

comm.gpu.ConvolutionalDeinterleaver

GPU による一連のシフト レジスタを使用したシンボルのデインターリーブ

このオブジェクトを使用するには、Parallel Computing Toolbox™ がインストールされており、サポートされる GPU にアクセスできなければなりません。ホスト コンピューターに GPU が構成されている場合、処理には GPU が使用されます。そうでない場合、処理には CPU が使用されます。GPU の詳細については、GPU 計算 (Parallel Computing Toolbox)を参照してください。

説明

comm.gpu.ConvolutionalDeinterleaver System object™ は、グラフィックス処理装置 (GPU) を使用して入力シーケンスのシンボルをデインターリーブします。

GPU を使用して入力シーケンスのシンボルをデインターリーブするには、次のようにします。

  1. comm.gpu.ConvolutionalDeinterleaver オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

deintrlvr = comm.gpu.ConvolutionalDeinterleaver は、既定の畳み込みデインターリーバー System object を作成します。

deintrlvr = comm.gpu.ConvolutionalDeinterleaver(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、NumRegisters=10 は内部シフト レジスタの数を指定します。

intrlvr = comm.gpu.ConvolutionalDeinterleaver(m,b,ic) は、NumRegisters プロパティを m に、RegisterLengthStep プロパティを b に、InitialConditions プロパティを ic に設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

内部シフト レジスタの数。正の整数として指定します。

データ型: double

連続する各シフト レジスタに組み込む追加のシンボル数。正の整数として指定します。最初のレジスタはゼロ シンボルを保持します。

データ型: double

シフト レジスタの初期条件。次のいずれかの値として指定します。

  • スカラー — 最後のシフト レジスタを除くすべてのシフト レジスタが同一の指定値を格納します。

  • 列ベクトル — 列ベクトルの長さが NumRegisters プロパティの値と等しい場合、k 番目のシフト レジスタは指定のベクトルの (N–k+1) 番目の要素を格納します。N はシフト レジスタの総数です。

最初のシフト レジスタはゼロ遅延であるため、値を指定する必要はありません。最初のシフト レジスタの遅れがゼロであるため、オブジェクトはこのプロパティの最初の要素を無視します。

データ型: double

使用法

説明

deintrlvseq = deintrlvr(intrlvseq) は、一連のシフト レジスタを使用して、シンボルの入力シーケンス inputseq をデインターリーブします。出力は、デインターリーブされたシーケンスです。

遅延の詳細については、畳み込みインターリーブと畳み込みデインターリーブの遅延を参照してください。

入力引数

すべて展開する

シンボルのインターリーブ済みシーケンス。列ベクトルとして指定します。このシーケンスは、comm.gpu.ConvolutionalInterleaver System object または comm.ConvolutionalInterleaver System object を使用してインターリーブされたシーケンスでなければなりません。

データ転送のレイテンシを短縮するには、入力信号を gpuArray (Parallel Computing Toolbox) オブジェクトとして書式設定します。詳細については、GPU ベースの System object を使用した配列処理を参照してください。

データ型: double | single | uint32 | int32

出力引数

すべて展開する

シンボルのデインターリーブ済みシーケンス。intrlvseq 入力と同じデータ型とサイズの列ベクトルとして返されます。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

GPU ベースの畳み込みインターリーバーと畳み込みデインターリーバーの System object を作成します。

intrlvr = comm.gpu.ConvolutionalInterleaver('NumRegisters',2, ...
    'RegisterLengthStep',3);
deintrlvr = comm.gpu.ConvolutionalDeinterleaver('NumRegisters',2, ...
    'RegisterLengthStep',3);

ランダム データ シーケンスを生成します。データ シーケンスをインターリーバーを介して渡してから、デインターリーバーを介して渡します。

data = (0:20)';
intrlvData = intrlvr(data);
deintrlvData = deintrlvr(intrlvData);

元のシーケンス、インターリーブ シーケンス、復元されたシーケンスを表示します。

[data intrlvData deintrlvData]
ans = 21×3

     0     0     0
     1     0     0
     2     2     0
     3     0     0
     4     4     0
     5     0     0
     6     6     0
     7     1     1
     8     8     2
     9     3     3
      ⋮

インターリーバーとデインターリーバーのペアを経由するときの遅延は、NumRegisters プロパティと RegisterLengthStep プロパティの積に等しくなります。

intrlvDelay = intrlvr.NumRegisters * intrlvr.RegisterLengthStep
intrlvDelay = 6

この遅延を考慮して、元のデータとデインターリーブしたデータが同一であることを検証します。

numSymErrors = symerr(data(1:end-intrlvDelay), ...
    deintrlvData(1+intrlvDelay:end))
numSymErrors = 0

詳細

すべて展開する

拡張機能

バージョン履歴

R2012a で導入