最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.gpu.BlockInterleaver

GPU によるブロック インターリーブ シーケンスの作成

説明

GPU BlockInterleaver オブジェクトは、GPU (グラフィックス プロセシング ユニット) を使用して入力信号内のシンボルを並べ替えます。

メモ

このオブジェクトを使用するには、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.BlockInterleaver のプロパティに従い、入力シンボルを並べ替えます。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

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

構築

H = comm.gpu.BlockInterleaver は、GPU ベース ブロック インターリーバー System object H を作成します。このオブジェクトは、置換ベクトルに基づいて入力信号内のシンボルを並べ替えます。

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

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

プロパティ

PermutationVector

置換ベクトル

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

メソッド

step置換ベクトルを使用した入力シンボルの並べ替え
すべての System object に共通
release

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

アルゴリズム

GPU Block Interleaver System object は、comm.BlockInterleaver System object と同じアルゴリズムを使用します。詳細は、comm.BlockInterleaver ヘルプ ページの「アルゴリズム」を参照してください。

すべて折りたたむ

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

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 で導入