メインコンテンツ

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

istrellis

有効なトレリス構造体に対して真

説明

[isok,status] = istrellis(s) は、入力 s が有効なトレリス構造体であるかどうかをチェックします。入力が有効なトレリス構造体の場合、isok は 1 で、status は空の文字ベクトルです。有効なトレリス構造体でない場合、isok は 0 で、statuss が有効なトレリス構造体でない理由を示します。

すべて折りたたむ

この例では、符号化されていないビットとフィードバックをもつ畳み込み符号化器用の非標準トレリス構造体を作成する方法を示します。符号化器固有の仕様が 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);

MATLAB figure

行列 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);

MATLAB figure

結果のトレリス構造体のチェック

istrellis(myTrellis)
ans = logical
   1

戻り値 1 により、トレリス構造体が有効であることが確認されます。

入力引数

すべて折りたたむ

チェックする MATLAB 構造体。次の表に説明されているフィールドをもつ構造体として指定します。

トレリス構造体のフィールド次元平均
numInputSymbolsスカラー 符号化器への入力シンボルの数: 2k
numOutputSymbolsスカラー 符号化器からの出力シンボルの数: 2n
numStatesスカラー 符号化器内の状態の数
nextStatesnumStates 行 2k 列の行列 現在の状態と現在の入力のすべての組み合わせの次の状態
outputsnumStates 行 2k 列の行列 現在の状態と現在の入力のすべての組み合わせの出力 (8 進数)

データ型: struct

出力引数

すべて折りたたむ

結果を示す true または false。入力が有効なトレリス構造かどうかを示す、logical 1 (true) または logical 0 (false) として返されます。

データ型: logical

isok の結果が false となった理由。文字ベクトルとして指定されます。isok が true の場合、status は空の文字ベクトルになります。

データ型: char

詳細

すべて折りたたむ

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入