このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ソースとシンク
Communications Toolbox™ は通信システムのパフォーマンスの解析を容易にするソース、シンク、および表示デバイスを用意しています。
データ ソース
ソースとシンクに示されている関数とブロックを使用して、ランダム データを生成し、信号ソースをシミュレートします。
ランダムなシンボル
関数 randsrc
は、指定されたアルファベットに依存せず選択されたエントリとユーザー指定の分布をもつ、乱数行列を生成します。特殊な場合には、バイポーラ行列を生成します。
たとえば、下記のコマンドは、1,3,5 からエントリがランダムで無関係に選択され、一様分布する 5 行 4 列行列を生成します。
a = randsrc(5,4,[1,3,5])
a = 5×4
5 1 1 1
5 1 5 3
1 3 5 5
5 5 3 5
3 5 5 5
分布を非対称にして 1 の発生確率を 3 や 5 の 2 倍にしたい場合は、下記のコマンドを使用します。3 番目の入力引数は 2 行から成り、1 つの行が b
の取り得る値を示し、もう 1 つの行が各値の確率を示すことに注意してください。
b = randsrc(5,4,[1,3,5; .5,.25,.25])
b = 5×4
3 5 3 5
1 3 1 3
5 1 1 1
5 3 1 5
3 1 1 1
ランダムな整数
MATLAB® では、関数 randi
は、エントリが指定した範囲内にあるランダムな整数行列を生成します。特殊な場合には、ランダムなバイナリ行列を生成します。
たとえば、以下のコマンドは、2 から 10 の間のランダムな整数から構成される 5 行 4 列の行列を生成します。
c = randi([2,10],5,4)
c = 5×4
5 6 4 6
5 6 8 10
8 7 7 5
9 8 3 7
3 8 3 4
希望する範囲が [2,10] でなく [0,10] の場合は、下記のコマンドのいずれかを使うことができます。これらは、異なる数値結果を生成しますが、同じ分布を利用します。
d = randi([0,10],5,4); e = randi([0 10],5,4);
Simulink® では、Random Integer Generator ブロックと Poisson Integer Generator ブロックはランダムな非負の整数を含むベクトルを生成します。Random Integer Generator ブロックは、ブロック マスクで指定した区分された範囲内で、一様分布を使用します。Poisson Integer Generator ブロックはポアソン分布を使用して出力を決定します。特に、出力には任意の非負の整数を含めることができます。
ランダムなビット エラーパターン
MATLAB では、関数randerr
はエントリが 0 か 1 の行列を生成します。しかし、このオプションは randi
のオプションとは異なります。randerr
は誤り制御符号化の検査を目的としているためです。たとえば、以下のコマンドは、各行が正確に 1 つの 1 を含むという属性をもつ 5 行 4 列のバイナリ行列を生成します。
f = randerr(5,4)
f = 5×4
0 0 0 1
1 0 0 0
1 0 0 0
0 0 1 0
0 0 0 1
5 個の 4 ビットコードワード長からなる 2 値符号に摂動を与えるためにこのコマンドを使います。符号行列 (剰余 2) に乱数行列 f
を付加すると、各コードワード長にちょうど 1 つの誤りが差し込まれます。
一方、確率 0.4 の 1 つの誤りと確率 0.6 の 2 つの誤りを導入することによって各コードワードに摂動を与えたい場合は、上記のコマンドを下記のように置き換えます。各列の '1' の数は 0.4 の確率で 1 つ、それ以外の場合は 2 つです。
g = randerr(5,4,[1,2; 0.4,0.6])
g = 5×4
1 0 1 0
0 1 0 1
0 0 0 1
1 0 0 1
0 0 1 0
符号行列 (剰余 2) に乱数行列 g
を加算すると、各コードワード長に、それぞれに指定された発生確率で 1 つまたは 2 つの誤りが発生します。randerr
の 3 番目の引数である確率行列は、各行の 1 の位置ではなく、数のみに影響を与えます。
その他の応用として、下記のコマンドを使って確率が等しい 100 要素のバイナリ列ベクトルを生成することができます。3 つのコマンドは、異なる数値出力を生成しますが、同じ "分布" を使います。3 番目の入力引数は、各関数の特定の動作の指定方法に応じて異なることに注意してください。
binarymatrix1 = randsrc(100,1,[0 1]); % Possible values are 0,1 binarymatrix2 = randi([0 1],100,1); % Two possible values binarymatrix3 = randerr(100,1,[0 1; 0.5 0.5]); % No 1s, or one 1
Simulink では、Bernoulli Binary Generator ブロックはランダムなビットを生成しますが、これはソースの表現に適しています。このブロックは信号の各要素を独立したベルヌーイ確率変数として考慮します。また、異なる要素が同一の分布である必要はありません。
ノイズ源
Simulink® 内にノイズ ジェネレーター ブロックを作成して、通信リンクをシミュレートします。
ランダム ノイズ ジェネレーター
乱数生成関数をもつ MATLAB Function (Simulink) ブロックを使用することで、ランダム ノイズ ジェネレーターを作成してチャネル ノイズのシミュレーションを行うことができます。次の組み合わせを使用して、さまざまな種類のチャネル ノイズを生成します。
分布 | ブロック | 関数 |
---|---|---|
ガウス | MATLAB Function (Simulink) | wgn |
レイリー | MATLAB Function (Simulink) | randn |
ライス | MATLAB Function (Simulink) | randn |
区分された領域で一様 | MATLAB Function (Simulink) | rand |
レイリー分布ノイズとライス分布ノイズの作成方法の例については、Simulink のランダム ノイズ ジェネレーターを参照してください。
ガウス ノイズ ジェネレーター
MATLAB® では、関数 wgn
は、ホワイト ガウス ノイズ分布を使って乱数行列を生成します。dBW (ワットに対するデシベル)、dBm、あるいは線形単位によってノイズのパワーを指定します。実数または複素数のノイズを生成することができます。
たとえば、下記のコマンドは、パワーが 2 dBW である実数のホワイト ガウス ノイズを含む長さ 50 の列ベクトルを生成します。既定では、パワー タイプは dBW 単位で、負荷インピーダンスは 1 オームです。
y1 = wgn(50,1,2);
パワーが 2 ワットで、負荷が 60 オームである複素ホワイト ガウス ノイズを生成するには、下記のコマンドのいずれかを使ってください。
y2 = wgn(50,1,2,60,'complex','linear'); y3 = wgn(50,1,2,60,'linear','complex');
加法性ホワイト ガウス ノイズ チャネルを通して信号を送信するには、関数 awgn
を使います。詳細については、AWGN チャネルを参照してください。
シーケンス発生器
ソースとシンクに示されている関数、System object、およびブロックを使用して、通信システムにおける拡散または同期用のシーケンスを生成します。疑似ランダム シーケンス、同期符号、および直交符号を生成できます。これらのシーケンス発生器の相関プロパティを比較する例については、拡散シーケンスを参照してください。
疑似ランダム シーケンス
MATLAB® の以下の System object や Simulink の以下のブロックを使用して、疑似ランダム シーケンスまたは疑似ノイズ (PN) シーケンスを生成できます。これらのシーケンスの応用範囲は、複数アクセスのスプレッド スペクトル通信システムから測距、同期、データ スクランブリングまで及びます。
シーケンス | System object™ | ブロック |
---|---|---|
Gold シーケンス | comm.GoldSequence | Gold Sequence Generator |
カサミ シーケンス | comm.KasamiSequence | Kasami Sequence Generator |
PN シーケンス | comm.PNSequence | PN Sequence Generator |
次の図に示すように、疑似ランダム シーケンスを生成するため、基になるコードによってシフト レジスタが実装されます。
発生器内のすべての r レジスタは、シフト レジスタに入ってくる矢印の値に従い、各タイム ステップでそれぞれの値を更新します。加算器は 2 を法とする加算を実行します。シフト レジスタは、z のバイナリ多項式、grzr + gr-1zr-1 + ... + g0 で表現できます。係数 gi は、i 番目のシフト レジスタから加算器への接続がある場合は 1、それ以外は 0 です。
係数 mi は、i 番目のシフト レジスタから出力の前の加算器の間に遅延がある場合は 1、それ以外は 0 です。シフトが 0 の場合、m0 スイッチが閉じ、他のすべての mk スイッチが開きます。
カサミ シーケンス発生器と PN シーケンス発生器は、この多項式表現をそれぞれの生成多項式に使用します。Gold シーケンス発生器は、この多項式表現を 1 番目と 2 番目に優先される生成多項式の PN シーケンスに使用します。
線形フィードバック シフト レジスタでの PN シーケンス生成のモデル化
次の例は、基本的な Simulink® ブロックで作成された線形フィードバック シフト レジスタ (LFSR) を使用して PN Sequence Generator
から出力されるシーケンスをモデル化できることを示します。
このモデルは、選択した生成多項式 p(z)=z^6+z+1 に対して、PN Sequence Generator
ブロックを使用し、基本的な Simulink ブロックを使用して LFSR をモデル化することによって、周期 63 の PN シーケンスを生成します。LFSR モデル図では 2 つのパラメーター Initial states
と Output mask vector (or scalar shift value)
が解釈されています。コールバック関数 PreLoadFcn
を使用してランタイム パラメーターが初期化されます。コールバック関数を表示するには、MODELING
、SETUP
、Model Settings
、Model Properties
に進み、Callbacks
タブを選択します。
スコープの出力は、2 つの実装によって、一致する PN シーケンスが生成されることを示しています。
PN Sequence Generator ブロックを使用することで、長い周期の PN シーケンスを簡単に生成できます。さらに実験を行うため、モデルを開きます。設定を変更し、異なるパス遅延に対してパフォーマンスがどのように変化するかを確認したり、PN シーケンス発生器パラメーターを調整します。シミュレーションを実行する前に [Initial states] の値を変更することで、さまざまな初期状態で実験できます。すべての値において、生成される 2 つのシーケンスは同じです。
同期符号
comm.BarkerCode
System object と Barker Code Generator ブロックを使用し、バーカー符号を生成して同期を実行します。バーカー符号は PN シーケンスのサブセットです。これらは長さが最大でも 13 の短い符号で、低相関サイドローブです。相関サイドローブは、それ自身の時間シフト バージョンをもつコードワードの相関です。
直交符号
直交符号は完全相関プロパティのメリットを拡散させるために使用されます。受信側が送信側と完全に同期するマルチユーザー スプレッド スペクトル システムで使用すると、逆拡散処理は理想的になります。
符号 | System object | ブロック |
---|---|---|
アダマール符号 | comm.HadamardCode | Hadamard Code Generator |
OVSF 符号 | comm.OVSFCode | OVSF Code Generator |
ウォルシュ符号 | comm.WalshCode | Walsh Code Generator |
スコープ
Comm Sinks ブロック ライブラリには、次の 3 つのタイプの信号プロットを表示するスコープが含まれています。
次の表は、ブロックとこれらにより生成されるプロットの一覧です。
ブロック名 | プロット |
---|---|
Eye Diagram | 信号のアイ ダイアグラム |
Constellation Diagram | 信号のコンスタレーション ダイアグラムと信号軌跡 |
アイ ダイアグラム
アイ ダイアグラムは、符号間干渉の影響やデジタル伝送におけるチャネル劣化要因の検討にとって、シンプルで便利な手段です。このソフトウェア製品がアイ ダイアグラムを構築すると、固定間隔の時間軸で受信信号がプロットされます。固定間隔の時間の最後では、時間軸の先頭に折り返します。その結果、アイ ダイアグラムは多くのオーバーラップする曲線で構成されます。アイ ダイアグラムの使用目的の 1 つは、アイが最も広く開かれている点を探すことであり、復調信号をデマッピングしてデジタル メッセージを回復する場合に、その点を判定点として使用します。
Eye Diagram ブロックはアイ ダイアグラムを生成します。このブロックは離散時間信号を処理し、マスク パラメーターに基づいて、判定を指示する線を周期的に描きます。
散布図
信号のコンスタレーション ダイアグラムは、その判定点での信号の値を表示します。条件が最高の場合は、信号のアイ ダイアグラムのアイが最も広く開いている時間を判定点にします。
Constellation Diagram ブロックは離散時間信号からコンスタレーション ダイアグラムを生成します。例は、正弦波の表示にあります。
信号軌跡
信号軌跡は、信号の全時間にわたる連続プロットです。信号軌跡と散布図との違いは、散布図は離散した時間間隔で信号軌跡上に点を表示する点にあります。
Constellation Diagram ブロックは信号軌跡を生成します。ShowTrajectory
プロパティが true に設定されている場合、Constellation Diagram ブロックは信号軌跡を生成します。信号軌跡は、間引き係数 (Samples per symbol
) の指定に関係なく、入力信号のすべての点をつなぎます。
正弦波の表示
次のモデルは複素正弦波信号からコンスタレーション ダイアグラムとアイ ダイアグラムを生成します。判定時間間隔は、一部を除き大半が正弦波周期の整数倍率ですが、アイ ダイアグラムは時間的なドリフトを示しています。具体的には、アイ ダイアグラムでの連続トレースと散布図での連続点はほぼ一致していますが、オーバーラップはしません。
モデルを作成するには、次のブロックを収集し、設定します。
Sine Wave — Simulink Sources ライブラリの Sine Wave ブロック "ではない"
[Frequency] を
.502
に設定します。[Output complexity] を
[Complex]
に設定します。[サンプル時間] を
1/16
に設定します。
Comm Sinks ライブラリの Constellation Diagram
[コンスタレーション プロパティ] パネルで [Samples per symbol] を
16
に設定します。
Comm Sinks ライブラリの Eye Diagram
[Plotting Properties] パネルで [Samples per symbol] を
16
に設定します。[Figure Properties] パネルで [Scope position] を
figposition([42.5 55 35 35]);
に設定します。
前の図に示したようにブロックを接続します。[シミュレーション] セクションで、[終了時間] を 250
に設定します。[シミュレーション] セクションは複数のタブに表示されます。モデルを実行すると、次の散布図プロットが生成されます。
散布図の点は半径 1 の円上にあります。時間の経過とともにこれらの点は消えていきます。これは、[Rendering Properties] で [Color fading] の隣のチェック ボックスがオンになっているためで、このためスコープが、時間が経過するにつれて点を描写する色を次第に薄めていくからです。このチェック ボックスをオフにすると、点は完全な円として描写されます。
Constellation Diagram ブロックは円形の軌跡を表示します。
アイ ダイアグラムで、トレースの上部分は信号の実数部を表し、トレースの下部分は信号の虚数部を表します。
変調信号の表示
このマルチパート例では変調信号のアイ ダイアグラム、散布図、信号軌跡プロットを作成します。以下のそれぞれの節でプロットを 1 つずつ調べます。
変調信号のアイ ダイアグラム
次のモデルは QPSK を使用して乱数信号を変調し、レイズド コサイン フィルターで信号をフィルター処理し、フィルター処理された信号からアイ ダイアグラムを作成します。
モデルを作成するには、次のブロックを収集し、設定します。
Random Integer Generator (パラメーター設定を次のように更新):
[M-ary number] を
4
に設定します。[サンプル時間] を
0.01
に設定します。
QPSK Modulator Baseband (既定のパラメーター値を使用)
AWGN Channel (パラメーター設定を次のように更新):
[Mode] を
[Signal-to-noise ratio (SNR)]
に設定します。[SNR (dB)] を
15
に設定します。
Raised Cosine Transmit Filter (パラメーター設定を次のように更新):
[Filter shape] を
[Normal]
に設定します。[Rolloff factor] を
0.5
に設定します。[Filter span in symbols] を
6
に設定します。[Output samples per symbol] を
8
に設定します。[Input processing] を
[Elements as channels (sample based)]
に設定します。
Eye Diagram (パラメーター設定を次のように更新):
[Samples per symbol] を
8
に設定します。[Symbols per trace] を
3
に設定します。これはアイ ダイアグラムのトレースごとに表示されるシンボル数を指定します。"トレース" とは、アイ ダイアグラムの個々の線のいずれか 1 つを指します。[Traces displayed] を
3
に設定します。[New traces per display] を
1
に設定します。これはダイアグラムが更新されるごとに表示される新しいトレースの数を指定します。ダイアグラムが更新されるごとに残るトレースの数は、[Traces displayed] と [New traces per display] の差になります。[Rendering Properties] パネルで [Markers] を
+
に設定し、各サンプルでプロットされる点を示します。[Markers] の既定値は空で、マーカーを付けません。[Figure Properties] パネルで [Eye diagram to display] を
[In-phase only]
に設定します。
モデルを実行すると、アイ ダイアグラムは次の図を表示します。正確なイメージは、シミュレーションの停止や終了のタイミングにより異なります。
3 つのトレースが表示されています。[Rendering Properties] の [Color fading] が選択されているため、トレース 2 と 3 は色が薄くなっています。これにより、古いトレースほどより薄く表示されるようになります。この図ではトレース 1 が最新のもので、トレース 3 は最古のものになります。[New traces per display] が 1
に設定されているため、トレース 1 はこの表示が最初のものです。トレース 2 と 3 は以前の表示のものです。
[Symbols per trace] が 3
に設定されているため、各トレースには 3 つのシンボルが含まれ、[Samples per trace] が 8
に設定されているため、各シンボルには 8 つのサンプルが含まれています。トレース 1 には 24 個の点が含まれていますが、これは [Symbols per trace] と [Samples per symbol] の積であることに注意してください。一方、トレース 2 と 3 にはそれぞれ 25 個の点が含まれています。トレース 2 の最後の点 (スコープの右端) は、トレース 1 の最初の点 (スコープの左端) と同じサンプルを表します。同様に、トレース 3 の最後の点はトレース 2 の最初の点と同じサンプルを表します。このような重複する点は、次の図に示すように、並べて表示すればトレースが一致する点を示しています。
[Traces displayed] の値を 40
に変更し、[Markers] フィールドを解除すれば、よりリアルなアイ ダイアグラムを表示することができます。
[Offset] パラメーターを 0
に設定すると、プロットは最初のシンボルの中心から開始します。このためアイ ダイアグラムの開口部は大半の点が集まるプロットの中央にきます。
変調信号のコンスタレーション ダイアグラム
次のモデルは変調信号のアイ ダイアグラムで検討したのと同じ信号の散布図を作成します。
モデルを作成するには、変調信号のアイ ダイアグラムの手順に従いますが、Eye Diagram ブロックを次のブロックで置き換えます。
Constellation Diagram (パラメーター設定を次のように更新):
[Samples per symbol] を
2
に設定します。[Offset] を
0
に設定します。これは最初の点をプロットする前にスキップするサンプル数を指定します。[Symbols to display] を
40
に設定します。
シミュレーションを実行すると、Constellation Diagram ブロックは次のプロットを表示します。
プロットには 30 個の点が表示されています。[Rendering Properties] の [Color fading] が選択されているため、古い点ほどより薄く表示されます。
変調信号の信号軌跡
次のモデルは変調信号のアイ ダイアグラムで検討したのと同じ信号の信号軌跡プロットを作成します。
モデルを作成するには、変調信号のアイ ダイアグラムの手順に従いますが、Eye Diagram ブロックを次のブロックで置き換えます。
Constellation Diagram (パラメーター設定を次のように更新):
[Samples per symbol] を
8
に設定します。[Symbols to display] を
40
に設定します。これは信号軌跡で表示されるシンボルの数を指定します。表示される点の合計数は [Samples per symbol] と [Symbols to display] の積になります。
モデルを実行すると、コンスタレーション ダイアグラムは以下のような軌跡を表示します。
プロットには 40 個のシンボルが表示されています。[Rendering Properties] の [Color fading] が選択されているため、古いシンボルほどより薄く表示されます。
変調信号のコンスタレーション ダイアグラムを参照して、前の信号軌跡を同じ信号の散布図と比較してください。Constellation Diagram ブロックは、Constellation Diagram ブロックにより表示される点をつなぎ合わせて信号軌跡を表示します。
[Symbols to display] を 100
に増加させると、モデルは下記のような信号軌跡を生成します。表示される点の合計数は 800 で、これはパラメーター [Samples per symbol] と [Symbols to display] の積です。