このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
istrellis
有効なトレリス構造体に対して真
説明
例
この例では、符号化されていないビットとフィードバックをもつ畳み込み符号化器用の非標準トレリス構造体を作成する方法を示します。符号化器固有の仕様が poly2trellis
の入力要件に合わないため、poly2trellis
を使用してこの符号化器を作成することはできません。
手動でトレリス構造体を作成して、符号化器および復号化器の入力トレリス構造体として使用できます。符号化されていないビットとフィードバックをもつ畳み込み符号化器のモデルで使用されているConvolutional EncoderブロックおよびViterbi Decoderブロックが、ここで作成されたトレリス構造体を PreLoadFcn
コールバックを使用して読み込みます。
畳み込み符号化器
MSB ビットが符号化されないで残っている、フィードバック接続をもつレート 3/4 の畳み込み符号化器を作成します。
仕様に従って変数を宣言します。
K = 3; N = 4; constraintLength = 4;
トレリス構造体の作成
トレリス構造体は、次のフィールドをもちます。
numInputSymbols
- 入力シンボルの数numOutputSymbols
- 出力シンボルの数numStates
- 状態の数nextStates
- 次の状態行列outputs
- 出力行列
これらの構造体フィールドの詳細については、istrellis
を参照してください。
以前の myTrellis
構造体のすべての出現箇所をリセットします。
clear myTrellis;
トレリス構造体のフィールドを定義します。
myTrellis.numInputSymbols = 2^K; myTrellis.numOutputSymbols = 2^N; myTrellis.numStates = 2^(constraintLength-1);
行列 nextStates
の作成
行列 nextStates
は [numStates
x numInputSymbols
] 行列です。次の状態行列の (i,j) 要素は、j に等しい入力の初期状態 i からの遷移に対応する、結果として得られる最終状態インデックスです。
myTrellis.nextStates = [0 1 2 3 0 1 2 3; ... 6 7 4 5 6 7 4 5; ... 1 0 3 2 1 0 3 2; ... 7 6 5 4 7 6 5 4; ... 2 3 0 1 2 3 0 1; ... 4 5 6 7 4 5 6 7; ... 3 2 1 0 3 2 1 0; ... 5 4 7 6 5 4 7 6]
myTrellis = struct with fields:
numInputSymbols: 8
numOutputSymbols: 16
numStates: 8
nextStates: [8×8 double]
行列 nextStates
のプロット
補助関数 commcnv_plotnextstates
を使用して行列 nextStates
をプロットし、与えられた入力のさまざまな状態間の分枝遷移を示します。
commcnv_plotnextstates(myTrellis.nextStates);
行列 outputs
の作成
行列 outputs
は [numStates
x numInputSymbols
] 行列です。出力行列の (i,j) 要素は、j に等しい入力の現在の状態 i を与えられた 8 進数の出力シンボルです。
outputs = [0 2 4 6 10 12 14 16; ... 1 3 5 7 11 13 15 17; ... 0 2 4 6 10 12 14 16; ... 1 3 5 7 11 13 15 17; ... 0 2 4 6 10 12 14 16; ... 1 3 5 7 11 13 15 17; ... 0 2 4 6 10 12 14 16; ... 1 3 5 7 11 13 15 17]
outputs = 8×8
0 2 4 6 10 12 14 16
1 3 5 7 11 13 15 17
0 2 4 6 10 12 14 16
1 3 5 7 11 13 15 17
0 2 4 6 10 12 14 16
1 3 5 7 11 13 15 17
0 2 4 6 10 12 14 16
1 3 5 7 11 13 15 17
oct2dec
を使用して、これらの値を 10 進数で表示します。
outputs_dec = oct2dec(outputs)
outputs_dec = 8×8
0 2 4 6 8 10 12 14
1 3 5 7 9 11 13 15
0 2 4 6 8 10 12 14
1 3 5 7 9 11 13 15
0 2 4 6 8 10 12 14
1 3 5 7 9 11 13 15
0 2 4 6 8 10 12 14
1 3 5 7 9 11 13 15
出力行列を myTrellis
構造体にコピーします。
myTrellis.outputs = outputs
myTrellis = struct with fields:
numInputSymbols: 8
numOutputSymbols: 16
numStates: 8
nextStates: [8×8 double]
outputs: [8×8 double]
行列 outputs
のプロット
補助関数 commcnv_plotoutputs
を使用して行列 outputs
をプロットし、入力シンボルに応じて与えられた状態の考えられる出力シンボルを示します。
commcnv_plotoutputs(myTrellis.outputs, myTrellis.numOutputSymbols);
結果のトレリス構造体のチェック
istrellis(myTrellis)
ans = logical
1
戻り値 1
により、トレリス構造体が有効であることが確認されます。
入力引数
チェックする MATLAB 構造体。次の表に説明されているフィールドをもつ構造体として指定します。
トレリス構造体のフィールド | 次元 | 平均 |
---|---|---|
numInputSymbols | スカラー | 符号化器への入力シンボルの数: 2k |
numOutputSymbols | スカラー | 符号化器からの出力シンボルの数: 2n |
numStates | スカラー | 符号化器内の状態の数 |
nextStates | numStates 行 2k 列の行列 | 現在の状態と現在の入力のすべての組み合わせの次の状態 |
outputs | numStates 行 2k 列の行列 | 現在の状態と現在の入力のすべての組み合わせの出力 (8 進数) |
データ型: struct
出力引数
結果を示す true または false。入力が有効なトレリス構造かどうかを示す、logical 1 (true) または logical 0 (false) として返されます。
データ型: logical
isok
の結果が false となった理由。文字ベクトルとして指定されます。isok
が true の場合、status
は空の文字ベクトルになります。
データ型: char
詳細
符号化率 k/n の符号に対する有効な MATLAB トレリス構造体は、次のフィールドをもちます。
トレリス構造体のフィールド | 次元 | 平均 |
---|---|---|
numInputSymbols | スカラー | 符号化器への入力シンボルの数: 2k |
numOutputSymbols | スカラー | 符号化器からの出力シンボルの数: 2n |
numStates | スカラー | 符号化器内の状態の数 |
nextStates | numStates 行 2k 列の行列 | 現在の状態と現在の入力のすべての組み合わせの次の状態 |
outputs | numStates 行 2k 列の行列 | 現在の状態と現在の入力のすべての組み合わせの出力 (8 進数) |
nextStates
行列において、各エントリは、範囲 [0, (numStates
-1)] の整数です。sth 行 uth 列目の要素は、開始状態が s-1 で入力ビットが 10 進数表現 u-1 であるときに次の状態を示します。入力ビットを 10 進数に変換するには、最初の入力ビットを最上位ビット (MSB) として使用します。たとえば、nextStates
行列の 2 列目は、現在の入力値のセットが {0,...,0,1} であるときに、次の状態を保存します。
状態を 10 進値に変換するには、このルールを使用します。k が 1 を超える場合は、符号化器の最初の入力ストリームを受信するシフト レジスタは、状態番号に最下位のビットを与え、最終の入力ストリームを受信するシフト レジスタは、状態番号に最上位のビットを与えます。
outputs
行列では、sth 行 uth 列目の要素は、開始状態が s-1 で入力ビットが 10 進表現 u-1 の場合の符号化器の出力を示します。10 進数値に変換するには、最初の出力ビットを MSB として使用します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)