Main Content

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

comm.gpu.BlockDeinterleaver

ブロック インターリーブされたシーケンス順序の GPU による復元

説明

BlockDeinterleaver System object™ は、ブロック デインターリーバー System object を使用してインターリーブされたシーケンスの元の順序を復元します。

メモ

このオブジェクトを使用するには、Parallel Computing Toolbox™ のライセンスをインストールして対象 GPU へのアクセス権を入手しなければなりません。GPU の詳細は、GPU 計算 (Parallel Computing Toolbox)を参照してください。

GPU ベースの System object は、gpuArray クラスを使用して作成された一般的な MATLAB® 配列またはオブジェクトを受け入れます。GPU ベースの System object は、倍精度または単精度データ型の入力信号をサポートします。出力信号のデータ型は、入力信号から継承されます。

  • 入力信号が MATLAB 配列の場合、System object は CPU と GPU の間のデータ転送を処理します。出力信号は MATLAB 配列です。

  • 入力信号が gpuArray の場合、データは GPU に残ります。出力信号は gpuArray です。オブジェクトに gpuArray が渡されると、計算がすべて GPU 上で実行され、データ転送は発生しません。gpuArray 引数を渡すことにより、シミュレーション時間が短縮されてパフォーマンスが向上します。詳細については、GPU での配列の確立 (Parallel Computing Toolbox)を参照してください。

入力ベクトルをデインターリーブするには、以下の手順に従います。

  1. ブロック デインターリーバー オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.gpu.BlockDeinterleaver のプロパティに従って、入力ベクトルの要素を再配置します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

R2016b 以降では、step メソッドを使用して、System object によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

H = comm.gpu.BlockDeinterleaver は、GPU ベースのブロック デインターリーバー System object H を作成します。このオブジェクトは、BlockInterleaver System object を使用してインターリーブされたシーケンスの元の順序を復元します。

H = comm.gpu.BlockDeinterleaver(Name,Value) は、指定されたプロパティ名を指定された値に設定して、GPU ベース ブロック デインターリーバー オブジェクト H を作成します。

H = comm.gpu.BlockDeinterleaver(PERMVEC) は、PermutationVector プロパティを PERMVEC に設定して、GPU ベース ブロック デインターリーバー オブジェクト H を作成します。

プロパティ

PermutationVector

置換ベクトル

入力シンボルの置換に使用されるマッピングを整数の列ベクトルとして指定します。既定の設定は [5;4;3;2;1] です。マッピングは、要素の数が step メソッドへの入力の長さ N と等しいベクトルです。各要素は、繰り返しの値のない 1 から N の間の整数でなければなりません。

メソッド

step入力シーケンスのデインターリーブ
すべての System object に共通
release

System object のプロパティ値の変更の許可

アルゴリズム

このオブジェクトは、comm.BlockDeinterleaver System object と同じアルゴリズムを使用します。詳細は、comm.BlockDeinterleaver ヘルプ ページの「アルゴリズム」を参照してください。

すべて折りたたむ

インターリーバーおよびデインターリーバー オブジェクトを作成します。

interleaver = comm.gpu.BlockInterleaver([3 4 1 2]');
deinterleaver = comm.gpu.BlockDeinterleaver([3 4 1 2]');

ランダム データをインターリーバーとデインターリーバーを介して渡します。

data = randi(7,4,1);
intData = interleaver(data);
deIntData = deinterleaver(intData);

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

[data intData deIntData]
ans =

     6     1     6
     7     7     7
     1     6     1
     7     7     7

元のデータとデインターリーブしたデータが同一であることを確認します。

isequal(data,deIntData)
ans =

     1

一意の整数のランダム ベクトルを置換ベクトルとして生成します。

permVec = randperm(7)';

permVec をインターリーバーおよびデインターリーバー オブジェクトの置換ベクトルとして指定します。

interleaver = comm.gpu.BlockInterleaver(permVec);
deinterleaver = comm.gpu.BlockDeinterleaver(permVec);

ランダム データをインターリーバーとデインターリーバーを介して渡します。

data = randi(10,7,1);
intData = interleaver(data);
deIntData = deinterleaver(intData);

元のデータとデインターリーブしたデータが同一であることを確認します。

isequal(data,deIntData)
ans =

     1

拡張機能

R2012a で導入