ドキュメンテーション

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

ソースとシンク

Communications System Toolbox™ は通信システムのパフォーマンスの解析を容易にする、シンク デバイスと表示デバイスを用意しています。これらのデバイスは、System object、ブロックまたは関数のいずれかを使用して実装できます。

データ ソース

ブロックまたは関数を使用して乱数データを生成し、信号ソースをシミュレートできます。また、データ ソースとして Random Number ブロックなどの Simulink ブロックを使用することもできます。Random Data Sources サブライブラリは、アイコンをダブルクリックすることにより開けます。そのアイコンはメインの Communications System Toolbox ブロック ライブラリの Comm Sources ライブラリにあります。

ランダムなシンボル

関数 randsrc は、指定されたアルファベットに依存せず選択された要素とユーザー指定の分布をもつ、乱数行列を生成します。特殊な場合には、バイポーラ行列を生成します。

たとえば、下記のコマンドは、1,3,5 から要素が無関係に選択され、一様分布する 5 行 4 列行列を生成します(これらは乱数なので、結果は異なる場合があります)。

a = randsrc(5,4,[1,3,5])

a =

     3     5     1     5
     1     5     3     3
     1     3     3     1
     1     1     3     5
     3     1     1     3

1 の発生確率を 3 や 5 の 2 倍にしたい場合は、下記のコマンドを使って非対称分布を指示します。3 番目の入力引数は 2 行から成り、1 つの行が b の取り得る値を示し、もう 1 つの行が各値の確率を示すことに注意してください。

b = randsrc(5,4,[1,3,5; .5,.25,.25])

b =

     3     3     5     1
     1     1     1     1
     1     5     1     1
     1     3     1     3
     3     1     3     1

ランダムな整数

MATLAB では、関数 randi は、要素が指定した範囲内にあるランダムな整数行列を生成します。特殊な場合には、ランダムなバイナリ行列を生成します。

たとえば、以下のコマンドは、2 から 10 の間のランダムな整数から構成される 5 行 4 列の行列を生成します。

c = randi([2,10],5,4)

c =

     2     4     4     6
     4     5    10     5
     9     7    10     8
     5     5     2     3
    10     3     4    10

希望する範囲が [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 =

     0     0     1     0
     0     0     1     0
     0     1     0     0
     1     0     0     0
     0     0     1     0

5 個の 4 ビット符号語長からなる 2 値符号に摂動を与えるためにこのコマンドを使います。符号行列 (剰余 2) に乱数行列 f を付加すると、各符号語長にちょうど 1 つの誤りが差し込まれます。

一方、確率 0.4 の 1 つの誤りと確率 0.6 の 2 つの誤りを導入することによって各符号語に摂動を与えたい場合は、上記のコマンドを下記のように置き換えます。

% Each row has one '1' with probability 0.4, otherwise two '1's
g = randerr(5,4,[1,2; 0.4,0.6])

g =

     0     1     1     0
     0     1     0     0
     0     0     1     1
     1     0     1     0
     0     1     1     0

    メモ:   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;.5 .5]); % No 1s, or one 1

Simulink では、Bernoulli Binary Generator ブロックはランダムなビットを生成しますが、これはソースの表現に適しています。このブロックは信号の各要素を独立した Bernoulli 乱数変数として考慮します。また、異なる要素が同一の分布である必要はありません。

ノイズ源

Comm Sources ライブラリの Noise Generators サブライブラリのブロックにより、チャネル ノイズをシミュレートするランダム データが生成されます。Noise Generators サブライブラリのブロックを使用すると、使用する配布に応じて、乱数実数を生成できます。選択肢を次の表にリストします。

ランダム ノイズ ジェネレーター

Comm Sources ライブラリの Noise Generators サブライブラリのブロックにより、チャネル ノイズをシミュレートするランダム データが生成されます。Noise Generators サブライブラリのブロックを使用すると、使用する配布に応じて、乱数実数を生成できます。選択肢を次の表にリストします。

分布ブロック
ガウス Gaussian Noise Generator
レイリー Rayleigh Noise Generator
ライス Rician Noise Generator
区分された領域で一様 Uniform Noise Generator

Noise Generators サブライブラリは、メインの Communications System Toolbox ブロック ライブラリのアイコンをダブルクリックすることにより開けます。

ガウス ノイズ ジェネレーター

MATLAB では、関数 wgn は、ホワイト ガウス ノイズ分布を使って乱数行列を生成します。dBW (ワットに対するデシベル)、dBm、あるいは線形単位によってノイズのパワーを指定します。実数または複素数ノイズを生成することができます。

たとえば、下記のコマンドは、パワーが 2 dBWである実数のホワイト ガウス ノイズを含む長さ 50 の列ベクトルを生成します。関数は、負荷インピーダンスが 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 チャネル」を参照してください。

Simulink では、Gaussian Noise Generator ブロックを使用してガウス ノイズを通信モデルに追加します。

数列ジェネレーター

Communications Sources ライブラリの Sequence Generators サブライブラリにあるブロックを使用して、通信システムにおける拡散または同期用の数列を作成できます。Sequence Generators サブライブラリは、メインの Communications System Toolbox ブロック ライブラリのアイコンをダブルクリックすることにより開けます。

Sequence Generators サブライブラリのブロックは、以下のものを生成します。

疑似ランダム数列

次の表に、疑似ランダム数列または疑似ノイズ (PN) 数列を生成するブロックをまとめます。これらの数列の応用範囲は、複数アクセスのスプレッド スペクトル通信システムから測距、同期、データ スクランブリングまで及びます。

数列ブロック
ゴールド数列 Gold Sequence Generator
カサミ シーケンス Kasami Sequence Generator
PN 数列 PN Sequence Generator

これら 3 つのブロックではシフト レジスタを使用して疑似ランダム数列を生成します。一般的なシフト レジスタの模式図を以下に示します。

発生器内のすべての r レジスタは、シフト レジスタに入ってくる矢印の値に従い、各タイム ステップでそれぞれの値を更新します。加算器は、2 を法とする加算を実行します。シフト レジスタは、z のバイナリ多項式、grzr + gr-1zr-1 + ... + g0 で表現できます。係数 gi は、i 番目のシフト レジスタから加算器への接続がある場合は 1、それ以外は 0 です。

Kasami Sequence Generator ブロックと PN Sequence Generator ブロックはその [Generator polynomial] パラメーター用にこの多項式表現を使用し、Gold Sequence Generator ブロックは [Preferred polynomial [1]] パラメーターと [Preferred polynomial [2]] パラメーター用にこの多項式表現を使用します。

前のブロック線図の下半分に、時間の d 単位だけ出力を遅延させることにより、正の整数 d で出力数列がシフトされる様子を示します。これはブロック線図の下半分にある d 番目の矢印に沿う 1 本の接続でできます。

同期符号

Barker Code Generator ブロックはバーカー符号を生成して同期を実行します。バーカー符号は PN 数列のサブセットです。これらは長さが最大でも 13 の短い符号で、低相関サイドローブです。相関サイドローブは、それ自身の時間シフト バージョンをもつ符号語の相関です。

直交符号

直交符号は完全相関プロパティのメリットを拡散させるために使用されます。受信側が送信側と完全に同期するマルチユーザー スプレッド スペクトル システムで使用すると、逆拡散処理は理想的になります。

符号ブロック
アダマール符号 Hadamard Code Generator
OVSF 符号 OVSF Code Generator
ウォルシュ符号 Walsh Code Generator

スコープ

Sinks ブロック ライブラリには、次の 3 つのタイプの信号プロットを表示するスコープが含まれています。

次の表に scope ブロックとこれらにより生成されるプロットをまとめます。

ブロック名プロット
Discrete-Time Eye Diagram Scope離散信号のアイ ダイアグラム
Constellation Diagram信号のコンスタレーション ダイアグラム
Discrete-Time Signal Trajectory Scope離散信号の信号軌跡

アイ ダイアグラム

アイ ダイアグラムは、符号間干渉の影響やデジタル伝送におけるチャネル欠陥の検討にとって、シンプルで便利な手段です。このソフトウェア製品がアイ ダイアグラムを構築すると、固定間隔の時間軸で受信信号がプロットされます。固定間隔の時間の最後では、時間軸の先頭に折り返します。その結果、アイ ダイアグラムは多くのオーバーラップする曲線で構成されます。アイ ダイアグラムの使用目的の 1 つとして、アイが最も広く開かれている点を探すことにあり、復調信号をデマッピングしてデジタル メッセージを回復する場合に、その点を判定点として使用します。

Discrete-Time Eye Diagram Scope ブロックはアイ ダイアグラムを生成します。このブロックは離散時間信号を処理し、マスク パラメーターに基づいて、判定を指示する線を周期的に描きます。

正弦波の表示変調信号の表示に例があります。

散布図

信号のコンスタレーション ダイアグラムは、その判定点での信号の値を表示します。条件が最高の場合は、信号のアイ ダイアグラムのアイが最も広く開いている時間を判定点にします。

Constellation Diagram ブロックは離散時間信号からコンスタレーション ダイアグラムを生成します。例は、正弦波の表示にあります。

信号軌跡

信号軌跡は、信号の全時間にわたる連続プロットです。信号軌跡と散布図との違いは、散布図は離散した時間間隔で信号軌跡上に点を表示する点にあります。

Discrete-Time Signal Trajectory Scope ブロックは信号軌跡を生成します。離散時間間隔で軌跡上に判定点に対応する点を表示する Constellation Diagram ブロックとは異なり、Discrete-Time Signal Trajectory Scope は判定点間の信号の軌跡の連続図を表示します。

正弦波の表示

次のモデルは複素正弦波信号からコンスタレーション ダイアグラムとアイ ダイアグラムを生成します。判定時間間隔は、一部を除き大半が正弦波周期の整数倍率ですが、アイ ダイアグラムは時間的なドリフトを示しています。具体的には、アイ ダイアグラムでの連続トレースと散布図での連続点はほぼ一致していますが、オーバーラップはしません。

モデルを開くモデルを開くには、MATLAB コマンド ラインで「doc_eyediagram」と入力します。モデルを作成するには、次のブロックを収集し、設定します。

  • DSP System Toolbox™ の Sources ライブラリの Sine Wave (Simulink Sources ライブラリの Sine Wave ブロックでは "ありません")

    • [Frequency].502 に設定します。

    • [Output complexity][Complex] に設定します。

    • [Sample time]1/16 に設定します。

  • Comm Sinks ライブラリの Constellation Diagram

    • [コンスタレーション プロパティ] パネルで [Samples per symbol]16 に設定します。

  • Comm Sinks ライブラリの Discrete-Time Eye Diagram Scope

    • [Plotting Properties] パネルで [Samples per symbol]16 に設定します。

    • [Figure Properties] パネルで [Scope position]figposition([42.5 55 35 35]); に設定します。

前の図に示したようにブロックを接続します。モデル ウィンドウの [シミュレーション] メニューから [モデル コンフィギュレーション パラメーター] を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで [終了時間]250 に設定します。モデルを実行すると、次の散布図プロットが生成されます。

散布図の点は半径 1 の円上にあります。時間の経過と共にこれらの点は消えていきます。これは、[Rendering Properties][Color fading] の隣のチェック ボックスがオンになっているためで、このためスコープが、時間が経過するにつれて点を描写する色を次第に薄めていくからです。このチェック ボックスをオフにすると、点は完全な円として描写されます。

Discrete-Time Signal Trajectory Scope ブロックは円形の軌跡を表示します。

アイ ダイアグラムで、トレースの上部分は信号の実数部を表し、トレースの下部分は信号の虚数部を表します。

変調信号の表示

このマルチパート例では変調信号のアイ ダイアグラム、散布図、信号軌跡プロットを作成します。以下のそれぞれの節でプロットを 1 つずつ調べます。

変調信号のアイ ダイアグラム

次のモデルは QPSK を使用して乱数信号を変調し、コサイン ロールオフ フィルターで信号をフィルター処理し、フィルター処理された信号からアイ ダイアグラムを作成します。

モデルを開くモデルを開くには、MATLAB コマンド ラインで「doc_signaldisplays」と入力します。モデルを作成するには、次のブロックを収集し、設定します。

  • Random Integer Generator、Comm Sources ライブラリの Random Data Sources サブライブラリ内

    • [M-ary number]4 に設定します。

    • [Sample time]0.01 に設定します。

  • Communications System Toolbox の Modulation ライブラリの Digital Baseband サブライブラリ内の PM にある QPSK Modulator Baseband。パラメーターは既定のまま

  • Communications System Toolbox の Channels ライブラリ内にある AWGN Channel。既定のパラメーター設定を次のように変更

    • [Mode][Signal-to-noise ratio (SNR)] に設定します。

    • [SNR (dB)]15 に設定します。

  • Comm Filters ライブラリの 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)] に設定します。

  • Comm Sinks ライブラリの Discrete-Time Eye Diagram Scope

    • [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] に設定します。

モデルを実行すると、Discrete-Time Eye Diagram スコープは次の図を表示します。シミュレーションを停止したり終了したりするタイミングにより、正確なイメージは変わります。

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 に設定すると、プロットは最初のシンボルの中心から開始します。このためアイ ダイアグラムの開口部は大半の点が集まるプロットの中央にきます。

変調信号のコンスタレーション ダイアグラム

次のモデルは変調信号のアイ ダイアグラムで検討したのと同じ信号の散布図を作成します。

モデルを作成するには、変調信号のアイ ダイアグラムの手順に従いますが、Discrete-Time Eye Diagram ブロックを次のブロックで置き換えます。

  • Comm Sinks ライブラリの Constellation Diagram

    • [Samples per symbol]2 に設定します。

    • [Offset]0 に設定します。これは最初の点をプロットする前にスキップするサンプル数を指定します。

    • [Symbols to display]40 に設定します。

シミュレーションを実行すると、Constellation Diagram ブロックは次のプロットを表示します。

プロットには 30 個の点が表示されています。[Rendering Properties][Color fading] が選択されているため、古い点ほどより薄く表示されます。

変調信号の信号軌跡

次のモデルは変調信号のアイ ダイアグラムで検討したのと同じ信号の信号軌跡プロットを作成します。

モデルを作成するには、変調信号のアイ ダイアグラムの手順に従いますが、Discrete-Time Eye Diagram ブロックを次のブロックで置き換えます。

  • Comm Sinks ライブラリの Discrete-Time Signal Trajectory Scope

    • [Samples per symbol]8 に設定します。

    • [Symbols displayed]40 に設定します。これは信号軌跡で表示されるシンボルの数を指定します。表示される点の合計数は [Samples per symbol][Symbols displayed] の積になります。

    • [New symbols per display]10 に設定します。これはダイアグラムが更新されるごとに表示される新しいシンボルの数を指定します。ダイアグラムが更新されるごとに残るシンボルの数は、[Symbols displayed][New symbols per display] の差になります。

モデルを実行すると、Discrete-Time Signal Trajectory スコープは下記のような軌跡を表示します。

プロットには 40 個のシンボルが表示されています。[Rendering Properties][Color fading] が選択されているため、古いシンボルほどより薄く表示されます。

変調信号のコンスタレーション ダイアグラムを参照して、前の信号軌跡を同じ信号の散布図と比較してください。Discrete-Time Signal Trajectory Scope ブロックは、Constellation Diagram ブロックにより表示される点をつなぎ合せて信号軌跡を表示します。

[Symbols displayed]100 に増加させると、モデルは下記のような信号軌跡を生成します。表示される点の合計数は 800 で、これは[Samples per symbol][Symbols displayed] の積です。

この情報は役に立ちましたか?