エレベータの前で立ち止まった瞬間にビデオ通話が固まり、半歩動かすと何事もなかったように復活する。この「半歩」で起きているのは、電波の消滅です。壁や床で反射した複数の波が受信点で逆位相にそろうと、受信電力は平均から30 dB も落ち込みます。これが深いフェード(deep fade)で、送信電力を10倍にしたところで、次の瞬間には別の場所に同じ谷が現れるだけです。
そこで技術者は発想を変えました。「1本のアンテナが谷にはまるなら、少し離れた場所にもう1本置けばいい」。2本のアンテナが同時に谷にはまる確率は、片方だけがはまる確率のさらに数分の1です。ここまでは素直な発想ですが、本当の問題はその先にあります。2本で受けた信号を、どう足し合わせればいいのでしょうか。 良いほうを選ぶ? 単純に足す? 実はどちらも最適ではありません。最適な足し方はただ一つに決まり、それが本記事の主役である最大比合成(MRC: Maximal Ratio Combining)です。
MRCは無線工学のあちこちに顔を出します。
- 携帯電話の基地局・端末: LTE/5G の受信機は複数アンテナで受けた信号をMRC(および干渉抑圧型の拡張であるIRC)で合成しています。カタログに載る「4×4 MIMO対応」の受信側の中身は、まずMRCです。
- 衛星通信・深宇宙通信: 複数局で受信した同一信号を合成する「アレイイング」は、まさにMRCの考え方そのものです。局ごとにG/Tが違っても、SNRに比例した重みで合成すれば最良の結果が得られます。
- CDMA の RAKE 受信機: 遅延時間の異なるマルチパス成分を「フィンガー」として個別に取り出し、MRCで束ねます。マルチパスという厄介者をダイバーシチ源に変える発想です。
- HARQ の合成再送: 誤った packet を捨てずに保存し、再送分とシンボル単位で合成する Chase combining も、時間方向のMRCです。
MRCを理解すると、「アンテナを増やすと何 dB 得をするのか」という問いに、数式で答えられるようになります。しかもその利得は、アレイ利得(平均電力の底上げ)とダイバーシチ利得(BER曲線の傾きの変化)という質の異なる2種類に分解できます。この分解こそが、無線リンク設計の勘所です。
本記事の内容
- 最大比合成の直感 — なぜ「弱い枝は小さく」足すのが正しいのか
- 合成出力SNRを重みベクトル $\bm{w}$ の関数として書き下す
- コーシー・シュワルツの不等式による最適重み $\bm{w} \propto \bm{h}$ の導出(省略なし)
- 合成SNRが各枝SNRの単純な和 $\gamma_{\mathrm{MRC}} = \sum_i \gamma_i$ になること
- レイリー枝での $\gamma_{\mathrm{MRC}}$ の分布 — 自由度 $2L$ のカイ二乗(=ガンマ分布)
- モーメント母関数(MGF)法による平均BERの導出と、高SNRでの $\bar\gamma^{-L}$ 則
- アレイ利得($10\log_{10} L$ dB)とダイバーシチ利得(傾き $L$)の分離
- 選択合成(SC)・等利得合成(EGC)との定量比較
- Pythonによる検証 — BER曲線、利得分解、相関・CSI誤差の影響
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- 受信ダイバーシティの合成方式 — 選択合成・等利得合成・最大比合成の理論と導出 — 3方式の全体像。本記事はその中のMRCだけを深掘りします
- ライスフェージングチャネルの理論とKファクタ推定の実装 — 複素ガウス散乱波としてのフェージングモデル
- ビット誤り率(BER)の計算と通信品質を解説 — AWGN下のBPSKで $P_b = Q(\sqrt{2\gamma})$ となること
最大比合成とは — 「自信のない枝は小さな声で」
会議室で4本のマイクが同じ話者を拾っている場面を想像してください。話者の目の前にあるマイクは声が大きくノイズが小さい。部屋の隅のマイクは声が遠く、空調の音ばかり拾っている。この4本を「議事録用の1本の音声」にまとめるとき、あなたならどうするでしょうか。
一番素朴な方法は、一番良いマイクだけを使うことです。これが選択合成(SC)に対応します。悪くはありませんが、他の3本が持っている情報を丸ごと捨てています。次に思いつくのは、4本を単純に足す方法です。これが等利得合成(EGC)に近い考え方です。今度は情報を捨てていませんが、隅のマイクのノイズまで等しく混ぜ込んでしまいます。
正解は「自信のある枝は大きく、自信のない枝は小さく」重み付けして足すことです。しかも「どのくらい小さくするか」には数学的に決まった答えがあります。それが「そのマイクの信号振幅に比例した重み」であり、「最大比」という名前の由来です。信号対雑音比が高い枝ほど大きく寄与させる — この当たり前に聞こえる方針が、実はあらゆる線形合成の中で最良であることを、これから証明します。
この「重み付けして足す」という操作を絵にすると、MRCの全体像は次の1枚に収まります。

図の左から右へ、送信シンボル $s$ が3本の異なるチャネル $h_1, h_2, h_3$ を通って3本のアンテナに届き、それぞれに重み $h_i^{*}$ が掛かって加算器で1本にまとまります。重みの大きさを表す横棒の長さに注目してください。深いフェード中のブランチ2($|h_2|=0.30$)の棒は、見通しの良いブランチ1($|h_1|=1.15$)の4分の1しかありません。そして下の枠に書いたように、この足し方をしたときだけ合成後のSNRが各枝SNRの単純な和になります。この「和になる」という結論を、以降で一歩ずつ証明していきます。
無線の文脈では、マイクの本数がアンテナの本数(ブランチ数、枝数)$L$ に対応し、「マイクの感度」がその瞬間のチャネル利得 $h_i$ に対応します。厄介なのは、無線ではチャネルが複素数だという点です。振幅が違うだけでなく位相もばらばらなので、そのまま足すと打ち消し合ってしまいます。MRCの重みは、この位相ずれを打ち消す働きと、振幅で優劣をつける働きを、たった一つの複素数 $h_i^{*}$ の中に同時に持っています。
まずは、その「合成前」と「合成後」で何が起きるのかを、時間波形として眺めてみましょう。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
rng = np.random.default_rng(3)
T, L = 400, 2 # 時間サンプル数, ブランチ数
gbar_dB = 10.0 # 1ブランチあたりの平均SNR [dB]
gbar = 10 ** (gbar_dB / 10)
# 時間相関を持たせたレイリーチャネル(移動でゆっくり変動する様子を再現)
w = (rng.standard_normal((T + 60, L)) + 1j * rng.standard_normal((T + 60, L))) / np.sqrt(2)
ker = np.hanning(61)[:, None]; ker = ker / np.sqrt((ker ** 2).sum())
h = np.array([np.convolve(w[:, i], ker[:, 0], mode="valid") for i in range(L)]).T
g_branch = np.abs(h) ** 2 * gbar # 各枝の瞬時SNR
g_mrc = g_branch.sum(axis=1) # MRC合成後の瞬時SNR(後で証明する式)
plt.figure(figsize=(10, 4.5))
for i in range(L):
plt.plot(10 * np.log10(g_branch[:, i]), lw=1.0, alpha=0.75, label=f"ブランチ{i+1}の瞬時SNR")
plt.plot(10 * np.log10(g_mrc), lw=2.2, color="k", label="MRC合成後の瞬時SNR")
plt.axhline(0, ls="--", color="r", lw=1.2, label="判定に必要なSNR(例: 0 dB)")
plt.xlabel("時間サンプル"); plt.ylabel("瞬時SNR [dB]")
plt.title("深いフェードは同時には来ない — 2枝MRCで谷が埋まる")
plt.legend(loc="lower right", fontsize=9); plt.grid(alpha=0.3); plt.tight_layout()
plt.show()

このグラフの読みどころは「谷の位置」です。各ブランチの瞬時SNRは単独では何度も 0 dB を割り込み(この例では時間の 12.75 %)、その間は通信が途切れます。ところが2本の谷は互いに独立なので、同じ時刻に両方が落ちることはめったにありません。黒い太線(MRC合成後)が 0 dB を割るのは 1.25 % だけで、ちょうど10分の1に減っています。しかも平均レベルは各ブランチより 3.01 dB 持ち上がっています。この「谷が消える」効果がダイバーシチ利得、「平均が上がる」効果がアレイ利得で、両者は別物です。記事の後半では、この2つを数値として分離します。
では、なぜ「和」が合成後SNRになるのでしょうか。それを示すために、まず受信信号を数式で書き下します。
受信信号モデル — L本の枝をベクトルにまとめる
$L$ 本の受信アンテナが、同じ送信シンボル $s$ を同時に受け取る状況を考えます。$i$ 番目の枝の受信信号は、複素チャネル利得 $h_i$ と加法性白色ガウス雑音 $n_i$ を使って次のように書けます。
$$ \begin{equation} y_i = h_i s + n_i, \qquad i = 1, 2, \dots, L \end{equation} $$
ここで各記号の意味を確認しておきます。$s$ は送信シンボルで、平均エネルギーを $E[|s|^2] = E_s$ とします。$h_i$ はフェージングによる複素利得で、振幅 $|h_i|$ が電波の強弱、偏角 $\arg h_i$ が位相回転を表します。$n_i$ は平均0・分散 $N_0$ の複素ガウス雑音 $\mathcal{CN}(0, N_0)$ で、枝の間で独立とします(アンテナごとに別のLNAがあるので、これは現実的な仮定です)。
$L$ 本ぶんを縦に並べてベクトルにまとめると、見通しが一気に良くなります。
$$ \begin{equation} \bm{y} = \bm{h} s + \bm{n}, \qquad \bm{y} = \begin{pmatrix} y_1 \\ \vdots \\ y_L \end{pmatrix},\; \bm{h} = \begin{pmatrix} h_1 \\ \vdots \\ h_L \end{pmatrix},\; \bm{n} = \begin{pmatrix} n_1 \\ \vdots \\ n_L \end{pmatrix} \end{equation} $$
雑音の共分散行列は $E[\bm{n}\bm{n}^{H}] = N_0 \bm{I}_L$ です($\bm{I}_L$ は $L$ 次単位行列、$(\cdot)^{H}$ は共役転置)。枝ごとに独立で同じ電力、という仮定がこの対角行列に凝縮されています。
線形合成とは、複素重みベクトル $\bm{w} = (w_1, \dots, w_L)^{T}$ を使って $L$ 個の観測を1つのスカラーに潰す操作です。
$$ \begin{equation} z = \bm{w}^{H} \bm{y} = \sum_{i=1}^{L} w_i^{*} y_i \end{equation} $$
ここで共役転置を使うのは慣習ですが、後で「重み $w_i$ を $h_i$ にそろえる」と言うときに共役が余計に付かず、式がきれいになるという実利があります。$z$ に $(1)$ 式を代入すると、信号部分と雑音部分が分離できます。
$$ \begin{equation} z = (\bm{w}^{H}\bm{h})\, s + \bm{w}^{H}\bm{n} \end{equation} $$
つまり、合成後の世界では「実効チャネル $\bm{w}^{H}\bm{h}$(複素数1個)」と「実効雑音 $\bm{w}^{H}\bm{n}$(複素ガウス1個)」だけの、ただのSISOチャネルになります。$L$ 本のアンテナで得をするかどうかは、この実効チャネルと実効雑音の比をどこまで大きくできるかに完全に帰着しました。次はその比を具体的に書き下します。
合成出力SNRを重みの関数として書く
$(4)$ 式の信号項の電力は、$|\bm{w}^{H}\bm{h}|^2 E_s$ です。$\bm{w}^{H}\bm{h}$ は決定論的な複素数(チャネルが既知という前提のもとで)なので、そのまま $|s|^2$ の平均エネルギー $E_s$ に掛かります。
雑音項の電力は、共分散行列を使って丁寧に計算します。
$$ \begin{equation} E\!\left[|\bm{w}^{H}\bm{n}|^2\right] = E\!\left[\bm{w}^{H}\bm{n}\,\bm{n}^{H}\bm{w}\right] = \bm{w}^{H} E[\bm{n}\bm{n}^{H}] \bm{w} = \bm{w}^{H} (N_0 \bm{I}) \bm{w} = N_0 \|\bm{w}\|^2 \end{equation} $$
1行目から2行目へは、期待値の中で $\bm{w}$ が定数なので外に出せることを使いました。3行目で雑音の共分散を代入し、最後に $\bm{w}^{H}\bm{w} = \|\bm{w}\|^2$ とまとめています。ここで大事なのは、重みを大きくすると雑音も同じだけ大きくなるという当たり前の事実が $\|\bm{w}\|^2$ という形で現れている点です。
したがって、合成出力の瞬時SNRは重み $\bm{w}$ の関数として次のように書けます。
$$ \begin{equation} \gamma(\bm{w}) = \frac{|\bm{w}^{H}\bm{h}|^2 E_s}{N_0 \|\bm{w}\|^2} \end{equation} $$
この式は、MRCの導出における出発点であり、同時にゴールでもあります。眺めてすぐわかる重要な性質が一つあります。$\bm{w}$ を $c\bm{w}$($c$ は任意の非ゼロ複素定数)に置き換えても、分子は $|c|^2$ 倍、分母も $|c|^2$ 倍になるので、$\gamma$ は変わりません。つまりSNRは重みベクトルの「向き」だけで決まり、「長さ」には依らない。これは、あとで「$\bm{w} \propto \bm{h}$」という比例関係の形で答えが出てくることの伏線です。合成器のゲインをどう設定しても受信性能は変わらず、変わるのはAGCの動作点だけ、というわけです。
私たちが解くべき問題は、これで完全に定式化されました。
$$ \begin{equation} \bm{w}_{\mathrm{opt}} = \arg\max_{\bm{w} \neq \bm{0}} \; \frac{|\bm{w}^{H}\bm{h}|^2}{\|\bm{w}\|^2} \end{equation} $$
分母に $\|\bm{w}\|^2$ がある比の最大化 — この形はレイリー商(Rayleigh quotient)と呼ばれ、線形代数の至るところに現れます。次のセクションでは、この最大化をコーシー・シュワルツの不等式ひとつで、幾何学的な意味も込みで解いてしまいます。
コーシー・シュワルツの不等式で最適重みを導く
不等式の主張と、それが答えになる理由
複素ベクトル $\bm{a}, \bm{b} \in \mathbb{C}^{L}$ に対して、コーシー・シュワルツの不等式が成り立ちます。
$$ \begin{equation} |\bm{a}^{H}\bm{b}|^2 \le \|\bm{a}\|^2 \|\bm{b}\|^2 \end{equation} $$
等号が成立するのは、$\bm{a}$ と $\bm{b}$ が平行なとき、すなわちある複素数 $\alpha$ が存在して $\bm{a} = \alpha \bm{b}$ となるときに限ります。
これを $(7)$ 式に当てはめます。$\bm{a} = \bm{w}$、$\bm{b} = \bm{h}$ とすると、
$$ \begin{equation} \frac{|\bm{w}^{H}\bm{h}|^2}{\|\bm{w}\|^2} \le \frac{\|\bm{w}\|^2\|\bm{h}\|^2}{\|\bm{w}\|^2} = \|\bm{h}\|^2 \end{equation} $$
右辺には $\bm{w}$ がまったく含まれていません。つまりどんな重みを選んでも、レイリー商は $\|\bm{h}\|^2$ を超えられない。そして等号を達成する $\bm{w}$ が実際に存在する($\bm{w} = \alpha\bm{h}$)のだから、それが最適解です。最大化問題が、不等式一本で片付いてしまいました。
不等式そのものを幾何で証明する
「不等式を使ったら解けました」で終わらせると、なぜ平行のときだけ等号なのかが腹落ちしません。ここでは射影を使った証明を書いておきます。この証明は、MRCの幾何学的な意味そのものを教えてくれます。
$\bm{w} \neq \bm{0}$ に対し、$\bm{w}$ が張る1次元部分空間への直交射影行列を作ります。
$$ \begin{equation} \bm{P} = \frac{\bm{w}\bm{w}^{H}}{\|\bm{w}\|^2} \end{equation} $$
$\bm{P}$ が射影行列であることは $\bm{P}^2 = \bm{P}$、$\bm{P}^{H} = \bm{P}$ から確かめられます。任意のベクトル $\bm{h}$ は、この部分空間に平行な成分 $\bm{P}\bm{h}$ と、直交する成分 $\bm{h} – \bm{P}\bm{h}$ に一意に分解できます。両者は直交するので、ピタゴラスの定理が使えます。
$$ \begin{equation} \|\bm{h}\|^2 = \|\bm{P}\bm{h}\|^2 + \|\bm{h} – \bm{P}\bm{h}\|^2 \end{equation} $$
ここで平行成分の長さを計算します。$\bm{P}\bm{h} = \bm{w}(\bm{w}^{H}\bm{h})/\|\bm{w}\|^2$ なので、そのノルムの2乗は
$$ \begin{equation} \|\bm{P}\bm{h}\|^2 = \frac{|\bm{w}^{H}\bm{h}|^2}{\|\bm{w}\|^4}\|\bm{w}\|^2 = \frac{|\bm{w}^{H}\bm{h}|^2}{\|\bm{w}\|^2} \end{equation} $$
これはまさに私たちが最大化したいレイリー商です。$(11)$ 式に戻すと、
$$ \begin{equation} \frac{|\bm{w}^{H}\bm{h}|^2}{\|\bm{w}\|^2} = \|\bm{h}\|^2 – \underbrace{\|\bm{h} – \bm{P}\bm{h}\|^2}_{\ge 0} \end{equation} $$
差し引かれる量は非負なので、レイリー商は $\|\bm{h}\|^2$ 以下です。そして等号が成り立つのは、直交成分がゼロ、つまり $\bm{h} = \bm{P}\bm{h}$ — $\bm{h}$ が $\bm{w}$ の方向に完全に乗っているときに限ります。
この証明が教えてくれる直感は明快です。重みベクトル $\bm{w}$ は「信号を測る物差しの向き」であり、その向きに落ちたチャネルの影の長さだけが信号として拾われる。 影を最大にしたければ、物差しをチャネルと同じ向きに合わせるしかありません。向きがずれるほど信号は目減りするのに、雑音は($\|\bm{w}\|^2$ で正規化されているので)減りません。だから損をするのです。

左の図で、赤い矢印がチャネル $\bm{h}$、青い矢印が重み $\bm{w}$ の向き、緑の矢印がその向きへの射影 $\bm{P}\bm{h}$ です。灰色の破線が $\bm{h}-\bm{P}\bm{h}$、つまり $(13)$ 式で差し引かれている「捨てられる分」で、これがゼロになるのは緑が赤に重なるとき、すなわち $\bm{w}\parallel\bm{h}$ のときだけです。右の図はそのずれ角に対する損失で、$\cos^2$ の形で減衰します。30° のずれでは 1.2 dB しか損しませんが、60° では 6.0 dB、80° を超えると急激に崩壊します。多少の推定誤差なら平気だが、大きくずれると一気に破綻するという後半のCSI誤差の議論も、この曲線の形から予想がつきます。
最適重みと最大SNR
以上より、最適重みは
$$ \begin{equation} \bm{w}_{\mathrm{opt}} = \alpha \bm{h}, \qquad \alpha \in \mathbb{C} \setminus \{0\} \end{equation} $$
で与えられます。$\alpha$ は任意でよいので、慣例として $\alpha = 1$ をとり、成分で書けば
$$ \begin{equation} w_i = h_i \quad \Longrightarrow \quad z = \bm{w}^{H}\bm{y} = \sum_{i=1}^{L} h_i^{*} y_i \end{equation} $$
となります。各枝を、その枝のチャネル利得の複素共役で重み付けして足す — これがMRCの実装そのものです。
このときの出力SNRは、$(6)$ 式と $(9)$ 式の等号から、
$$ \begin{equation} \gamma_{\mathrm{MRC}} = \|\bm{h}\|^2 \frac{E_s}{N_0} = \sum_{i=1}^{L} |h_i|^2 \frac{E_s}{N_0} = \sum_{i=1}^{L}\gamma_i \end{equation} $$
ここで $\gamma_i \equiv |h_i|^2 E_s/N_0$ は $i$ 番目の枝の瞬時SNRです。合成後のSNRは、各枝のSNRの単純な和になる。 これがMRCの最も重要な結論であり、記事の冒頭で黒い太線として描いた量の正体です。
なお、この結果は「線形合成の中で最良」という以上の意味を持ちます。雑音がガウスで枝間独立なら、$(15)$ 式の $z$ は $\bm{y}$ から $s$ を推定するための十分統計量になっており、MRCはML(最尤)受信機そのものです。線形に限定したのに最適受信機が出てきたのは偶然ではなく、ガウス雑音の下では整合フィルタが最適だという一般論の、空間版なのです。
ここまでで「重みは $h_i^{*}$」という答えが出ました。しかしこの複素共役という1個の量が、実は2つの役割を兼ねています。次はそれを分解してみます。
位相と振幅 — 一つの共役が担う二つの仕事
$h_i$ を極形式で $h_i = |h_i| e^{j\theta_i}$ と書くと、重みは
$$ \begin{equation} w_i^{*} = h_i^{*} = |h_i| e^{-j\theta_i} \end{equation} $$
となります。この式は次のように読めます。
第一の仕事は「位相をそろえる」ことです。 $e^{-j\theta_i}$ を掛けることで、枝ごとにばらばらだった位相回転 $\theta_i$ が打ち消されます。合成前の信号成分は $h_i s = |h_i|e^{j\theta_i} s$ ですが、$h_i^{*}$ を掛けると $|h_i|^2 s$ となり、すべての枝が同じ位相($s$ と同じ向き)にそろいます。位相がそろっているからこそ、足し算で振幅がそのまま加算されます。もし位相をそろえずに足したら、枝どうしがランダムに打ち消し合い、$L$ 本あっても電力は増えません。これは「コヒーレント加算」と呼ばれ、ダイバーシチ合成の最低条件です。
第二の仕事は「品質で重み付けする」ことです。 $|h_i|$ を掛けることで、強い枝の寄与が大きく、弱い枝の寄与が小さくなります。ここで「$|h_i|$ に比例」というのがミソで、「$|h_i|^2$ に比例」でも「$|h_i|$ に反比例」でもありません。合成後の信号振幅は $\sum |h_i|^2$ に比例し、雑音の標準偏差は $\sqrt{\sum |h_i|^2}$ に比例するので、SNRは $\sum|h_i|^2$ に比例する — この絶妙なバランスが「最大比」の正体です。
この2つの仕事を、複素平面のベクトル図で見比べてみましょう。

4枝の例で、各枝の寄与ベクトル $w_i^{*}h_i$ を雑音が1になるように正規化して継ぎ足したものです。(a) の位相補正なしでは矢印の向きがばらばらで、継ぎ足した先(黒い太矢印の終点)が原点近くから動かず、合成出力SNRは $-10.96$ dB まで落ちます。$L=4$ 本あっても電力がまったく増えていません。(b) のEGCでは $e^{-j\theta_i}$ を掛けたことで全ベクトルが実軸に並び、$3.14$ dB まで一気に回復します。(c) のMRCはさらに $|h_i|$ の重み付けが加わり、強い枝の矢印が長く弱い枝が短くなって $3.48$ dB — コーシー・シュワルツの上界 $\|\bm{h}\|^2 = 2.2269$($3.48$ dB)にちょうど一致します。(a) → (b) が 14 dB、(b) → (c) が 0.34 dB という差の大きさが、位相合わせの重要性を雄弁に物語っています。
この2つの仕事を分けて考えると、他の合成方式の位置づけが一目でわかります。
| 方式 | 重み $w_i^{*}$ | 位相補正 | 振幅重み |
|---|---|---|---|
| MRC | $h_i^{*} = \|h_i\|e^{-j\theta_i}$ | あり | あり($\|h_i\|$ に比例) |
| EGC | $e^{-j\theta_i}$ | あり | なし(全枝均等) |
| SC | 最強枝のみ 1、他 0 | 実質不要 | 極端(0か1か) |
EGCは位相だけ補正して振幅は均等に扱うので、「弱い枝の雑音まで等しく混ぜる」ぶんMRCに劣ります。SCは最強枝以外の情報を捨てるので、さらに劣ります。ただし後で見るように、EGCの損失は高SNRで 1 dB 程度しかありません。振幅の重み付けより位相をそろえることのほうが圧倒的に重要なのです。この事実は実装上とても大事で、振幅推定が多少ずれてもMRCの性能はほとんど落ちませんが、位相推定を間違えると一気に崩壊します。
枝ごとに雑音電力が違う場合
ここまでは全枝の雑音電力を $N_0$ で共通としましたが、実際にはLNAの雑音指数や干渉の入り方が枝ごとに違うことがあります。雑音共分散が $E[\bm{n}\bm{n}^{H}] = \bm{R}_n$(一般の正定値行列)のときは、まず白色化します。$\bm{R}_n^{-1/2}$ を両辺に掛けると、
$$ \begin{equation} \tilde{\bm{y}} = \bm{R}_n^{-1/2}\bm{y} = \underbrace{\bm{R}_n^{-1/2}\bm{h}}_{\tilde{\bm{h}}}s + \underbrace{\bm{R}_n^{-1/2}\bm{n}}_{\tilde{\bm{n}}} \end{equation} $$
となり、$E[\tilde{\bm{n}}\tilde{\bm{n}}^{H}] = \bm{I}$ という白色雑音の問題に帰着します。この世界での最適重みは $\tilde{\bm{w}} = \tilde{\bm{h}}$ なので、元の座標に戻すと
$$ \begin{equation} \bm{w}_{\mathrm{opt}} = \bm{R}_n^{-1}\bm{h}, \qquad \gamma_{\max} = \bm{h}^{H}\bm{R}_n^{-1}\bm{h} \end{equation} $$
を得ます。雑音電力が枝ごとに $N_{0,i}$ で対角なら $w_i = h_i/N_{0,i}$、つまり「チャネル共役をその枝の雑音電力で割る」ことになります。SNRの高い枝ほど重い、という原理は変わりません。
この一般形 $(19)$ 式は、干渉が存在する環境で使われるIRC(Interference Rejection Combining)や、アダプティブアレイのMVDR/Caponビームフォーマと同じ式です。MRCは「雑音が白色」という特殊ケースにすぎず、干渉が支配的な環境では $\bm{R}_n^{-1}$ が干渉方向にヌルを向ける働きをします。裏を返せば、強い干渉があるときにMRCを使うのは最適ではありません。この点は実務で必ず問題になるので、記事の後半で改めて触れます。
さて、$\gamma_{\mathrm{MRC}} = \sum_i \gamma_i$ という美しい結論を得ましたが、$\gamma_i$ 自体がフェージングでランダムに揺れています。この「ランダム変数の和」がどんな分布に従うのかを知らなければ、平均BERは計算できません。次にそれを求めます。
γ_MRC の分布 — 自由度2Lのカイ二乗=ガンマ分布
レイリー枝の統計から出発する
レイリーフェージングとは、直接波がなく多数の散乱波だけが到来する状況で、中心極限定理により $h_i$ が複素ガウス分布 $\mathcal{CN}(0,1)$ に従うモデルです($E[|h_i|^2]=1$ と正規化します)。実部と虚部をそれぞれ $a_i, b_i$ と書けば、$a_i, b_i \sim \mathcal{N}(0, 1/2)$ で互いに独立です。
したがって $|h_i|^2 = a_i^2 + b_i^2$ は「分散 $1/2$ のガウス2個の2乗和」です。分散を1に正規化するために2倍すると、
$$ \begin{equation} 2|h_i|^2 = (\sqrt{2}a_i)^2 + (\sqrt{2}b_i)^2, \qquad \sqrt{2}a_i, \sqrt{2}b_i \sim \mathcal{N}(0,1) \end{equation} $$
つまり $2|h_i|^2$ は自由度2のカイ二乗分布 $\chi^2_2$ に従います。自由度2のカイ二乗はパラメータ $1/2$ の指数分布に等しく、$|h_i|^2$ 自体は平均1の指数分布 $\mathrm{Exp}(1)$ です。「レイリー分布する振幅の2乗は指数分布」という有名な事実が、こうして出てきました。
平均枝SNRを $\bar\gamma = E_s/N_0$($E[|h_i|^2]=1$ なので $E[\gamma_i]=\bar\gamma$)と置けば、$\gamma_i = \bar\gamma|h_i|^2$ は平均 $\bar\gamma$ の指数分布です。
和の分布をMGFで一発で求める
$L$ 個の独立な指数分布の和なので、モーメント母関数(MGF)を使うのが最短です。指数分布のMGFは
$$ \begin{equation} M_{\gamma_i}(s) = E[e^{s\gamma_i}] = \int_0^{\infty} e^{s\gamma}\frac{1}{\bar\gamma}e^{-\gamma/\bar\gamma}d\gamma = \frac{1}{1 – s\bar\gamma}, \qquad s < 1/\bar\gamma \end{equation} $$
です。この積分は指数関数どうしの積を1本にまとめれば計算でき、$\frac{1}{\bar\gamma}\cdot\frac{1}{1/\bar\gamma – s}$ から $(21)$ が得られます。独立確率変数の和のMGFは各MGFの積なので、
$$ \begin{equation} M_{\gamma_{\mathrm{MRC}}}(s) = \prod_{i=1}^{L}\frac{1}{1-s\bar\gamma} = \left(1 – s\bar\gamma\right)^{-L} \end{equation} $$
これは形状パラメータ $L$、尺度パラメータ $\bar\gamma$ のガンマ分布($L$ が整数なのでアーラン分布)のMGFに他なりません。したがって確率密度関数は
$$ \begin{equation} f_{\gamma_{\mathrm{MRC}}}(\gamma) = \frac{\gamma^{L-1}}{(L-1)!\,\bar\gamma^{L}}e^{-\gamma/\bar\gamma}, \qquad \gamma \ge 0 \end{equation} $$
となります。同じことをカイ二乗の言葉で言えば、$2\gamma_{\mathrm{MRC}}/\bar\gamma \sim \chi^2_{2L}$、すなわち「自由度 $2L$ のカイ二乗」です。$L$ 本の複素チャネルは実自由度 $2L$ を持つので、その2乗和が自由度 $2L$ のカイ二乗になるのは自然です。
この分布の「原点近傍」がすべてを決める
$(23)$ 式で、記事の残り全部を支配する重要な性質は原点近傍のふるまいです。$\gamma \to 0$ で $e^{-\gamma/\bar\gamma}\to 1$ なので、
$$ \begin{equation} f_{\gamma_{\mathrm{MRC}}}(\gamma) \approx \frac{\gamma^{L-1}}{(L-1)!\,\bar\gamma^{L}} \qquad (\gamma \ll \bar\gamma) \end{equation} $$
$L=1$ では $f(0) = 1/\bar\gamma \neq 0$ で、密度は原点で有限の値を持ちます。「SNRがほぼゼロになる」ことが普通に起こるということです。ところが $L=2$ では $f(\gamma)\propto\gamma$ で原点で0になり、$L=4$ では $\propto\gamma^3$ でさらに強く押しつぶされます。枝を増やすと、合成SNRが原点付近に落ちる確率が急速に小さくなる。 この「原点付近の希薄さ」の指数 $L-1$ が、そのままアウテージ確率とBERの $\bar\gamma^{-L}$ 則を生みます。ダイバーシチとは、突き詰めればこの一点に集約されるのです。
分布がわかったので、通信の設計指標として最もよく使われるアウテージ確率を計算してみましょう。
アウテージ確率 — 傾きLが最初に顔を出す場所
「アウテージ(outage)」とは、合成後SNRが所要値 $\gamma_{\mathrm{th}}$ を下回って通信が成立しなくなる事象です。その確率は $(23)$ 式を0から $\gamma_{\mathrm{th}}$ まで積分すれば求まります。
$$ \begin{equation} P_{\mathrm{out}} = \int_0^{\gamma_{\mathrm{th}}}\frac{\gamma^{L-1}}{(L-1)!\bar\gamma^{L}}e^{-\gamma/\bar\gamma}d\gamma \end{equation} $$
$x = \gamma/\bar\gamma$ と置換すると $d\gamma = \bar\gamma dx$ で、$\bar\gamma$ がきれいに消えます。
$$ \begin{equation} P_{\mathrm{out}} = \frac{1}{(L-1)!}\int_0^{x_{\mathrm{th}}} x^{L-1}e^{-x}dx = \frac{\Gamma_{\mathrm{low}}(L, x_{\mathrm{th}})}{(L-1)!}, \qquad x_{\mathrm{th}} = \frac{\gamma_{\mathrm{th}}}{\bar\gamma} \end{equation} $$
不完全ガンマ関数は、$L$ が整数のとき部分積分を繰り返すことで有限和に書き下せます。結果だけ書くと、
$$ \begin{equation} P_{\mathrm{out}} = 1 – e^{-x_{\mathrm{th}}}\sum_{k=0}^{L-1}\frac{x_{\mathrm{th}}^{k}}{k!} \end{equation} $$
となります。$L=1$ なら $P_{\mathrm{out}} = 1 – e^{-x_{\mathrm{th}}}$ で、おなじみの指数分布のCDFです。
高SNR($x_{\mathrm{th}} \ll 1$、つまり平均SNRが所要値よりずっと大きい領域)での挙動を見ましょう。$e^{-x} = \sum_{m\ge 0}(-x)^m/m!$ を代入して展開すると、$x^0$ から $x^{L-1}$ までの項がきれいに打ち消し合い、最低次として $x^{L}$ の項が残ります。実際に $L=2$ でやってみると、$e^{-x}(1+x) = (1 – x + x^2/2 – \cdots)(1+x) = 1 – x^2/2 + O(x^3)$ なので $P_{\mathrm{out}} \approx x^2/2$ です。一般には
$$ \begin{equation} P_{\mathrm{out}} \approx \frac{x_{\mathrm{th}}^{L}}{L!} = \frac{1}{L!}\left(\frac{\gamma_{\mathrm{th}}}{\bar\gamma}\right)^{L} \end{equation} $$
となります。これが $(24)$ 式の「原点近傍で $\gamma^{L-1}$」を積分した結果であることに注意してください。密度が $\gamma^{L-1}$ なら、その積分は $\gamma^{L}$ です。
数値で確かめると、$x_{\mathrm{th}} = 0.1$(所要SNRより平均が10 dB 高い)のとき、厳密値と近似値は $L=1$ で $0.0952$ 対 $0.1$、$L=2$ で $4.68\times10^{-3}$ 対 $5.0\times10^{-3}$、$L=4$ で $3.85\times10^{-6}$ 対 $4.17\times10^{-6}$ です。近似は十分に良く、そして何より$L$ が1増えるごとに、アウテージ確率が2桁ずつ落ちていることに注目してください。$x_{\mathrm{th}}=0.1$ なら $x^L$ は $L$ ごとに $1/10$ ずつ、階乗の効果も加わって実質2桁近く改善します。
対数軸で見れば、$\log P_{\mathrm{out}} = -L\log\bar\gamma + \mathrm{const}$ なので、平均SNRを10 dB 上げるとアウテージ確率は $10^{-L}$ 倍になります。この傾き $L$ が「ダイバーシチ次数」の定義そのものです。
アウテージは「所要SNRを下回るかどうか」という二値の指標でした。実際の受信機ではもっと滑らかに性能が劣化します。それを表すのが平均BERで、こちらの導出には一工夫必要です。
平均BERの導出 — MGF法(Craig公式)
まず素朴な方法とその壁
AWGN下のBPSKでは、瞬時SNR $\gamma$ に対する条件付きビット誤り率が
$$ \begin{equation} P_b(\gamma) = Q(\sqrt{2\gamma}) \end{equation} $$
であることが知られています(詳細はビット誤り率の記事を参照)。フェージング下の平均BERは、これを $\gamma$ の分布で平均するだけです。
$$ \begin{equation} \bar{P}_b = \int_0^{\infty} Q(\sqrt{2\gamma})\, f_{\gamma}(\gamma)\, d\gamma \end{equation} $$
方針は明快ですが、$Q$ 関数自体が積分($Q(x)=\int_x^{\infty}\phi(t)dt$)なので、これは二重積分です。順序交換や部分積分で $L=1$ なら手計算できますが、$L$ が大きくなると急速に面倒になります。
L=1 を部分積分で解く(ウォーミングアップ)
一般論に入る前に、$L=1$ を丁寧に解いておきます。この計算の答えが、あとで一般の $L$ の式を検算する道具になります。
$f_\gamma(\gamma)=(1/\bar\gamma)e^{-\gamma/\bar\gamma}$ として、$u = Q(\sqrt{2\gamma})$、$dv = f_\gamma d\gamma$ とおき、$v = -e^{-\gamma/\bar\gamma}$ を選びます($v$ に定数 $-1$ を足しておくのがコツで、こうすると $\gamma\to\infty$ で $v\to0$ になり境界項が扱いやすくなります)。
まず $u$ の微分が必要です。合成関数の微分で、
$$ \begin{equation} \frac{d}{d\gamma}Q(\sqrt{2\gamma}) = -\frac{1}{\sqrt{2\pi}}e^{-\gamma}\cdot\frac{1}{\sqrt{2\gamma}} = -\frac{e^{-\gamma}}{2\sqrt{\pi\gamma}} \end{equation} $$
ここで $dQ/dx = -\phi(x)$、$x=\sqrt{2\gamma}$ より $x^2/2=\gamma$、$dx/d\gamma = 1/\sqrt{2\gamma}$ を使いました。部分積分の公式に入れると、
$$ \begin{equation} \bar{P}_b = \Big[-Q(\sqrt{2\gamma})e^{-\gamma/\bar\gamma}\Big]_0^{\infty} + \int_0^{\infty}e^{-\gamma/\bar\gamma}\frac{d}{d\gamma}Q(\sqrt{2\gamma})\,d\gamma \end{equation} $$
境界項は、$\gamma\to\infty$ で0、$\gamma=0$ で $-Q(0)\cdot 1 = -1/2$ なので、差し引き $+1/2$ です。第2項に $(31)$ 式を代入すると、
$$ \begin{equation} \bar{P}_b = \frac{1}{2} – \frac{1}{2\sqrt{\pi}}\int_0^{\infty}\gamma^{-1/2}e^{-\gamma\left(1+\frac{1}{\bar\gamma}\right)}d\gamma \end{equation} $$
残った積分はガンマ関数の公式 $\int_0^{\infty}\gamma^{-1/2}e^{-a\gamma}d\gamma = \Gamma(1/2)/\sqrt{a} = \sqrt{\pi/a}$ で片付きます。$a = 1+1/\bar\gamma = (1+\bar\gamma)/\bar\gamma$ を代入すると、
$$ \begin{equation} \bar{P}_b = \frac{1}{2} – \frac{1}{2\sqrt{\pi}}\sqrt{\frac{\pi\bar\gamma}{1+\bar\gamma}} = \frac{1}{2}\left(1 – \sqrt{\frac{\bar\gamma}{1+\bar\gamma}}\right) \end{equation} $$
これが有名な「レイリーフェージング下のBPSK平均BER」です。高SNRでは $\sqrt{\bar\gamma/(1+\bar\gamma)} = (1+1/\bar\gamma)^{-1/2}\approx 1 – 1/(2\bar\gamma)$ なので、
$$ \begin{equation} \bar{P}_b \approx \frac{1}{4\bar\gamma} \end{equation} $$
AWGNなら $\bar\gamma$ に対して指数関数的に落ちるBERが、フェージングでは $1/\bar\gamma$ というべき乗でしかも1乗でしか落ちない。これがフェージングの残酷さです。実際、$\bar\gamma = 10$ dB でAWGNなら $3.9\times10^{-6}$ のところ、レイリーでは $2.3\times10^{-2}$ — 6000倍の差があります。
MGF法(Craig公式)で一般の L を解く
$L\ge 2$ でも部分積分は原理的に可能ですが、はるかに賢い方法があります。Craig が1991年に示した $Q$ 関数の有限区間積分表現を使います。
$$ \begin{equation} Q(x) = \frac{1}{\pi}\int_0^{\pi/2}\exp\!\left(-\frac{x^2}{2\sin^2\theta}\right)d\theta, \qquad x \ge 0 \end{equation} $$
この表現の何がありがたいかというと、$\gamma$ が指数関数の肩にだけ現れ、しかも積分区間が有限という点です。$x = \sqrt{2\gamma}$ を代入すると $x^2/2 = \gamma$ なので、
$$ \begin{equation} Q(\sqrt{2\gamma}) = \frac{1}{\pi}\int_0^{\pi/2}\exp\!\left(-\frac{\gamma}{\sin^2\theta}\right)d\theta \end{equation} $$
これを $(30)$ 式に入れて、$\gamma$ に関する積分と $\theta$ に関する積分の順序を交換します(被積分関数が非負なのでトネリの定理で正当化されます)。
$$ \begin{equation} \bar{P}_b = \frac{1}{\pi}\int_0^{\pi/2}\left[\int_0^{\infty}e^{-\gamma/\sin^2\theta}f_{\gamma}(\gamma)d\gamma\right]d\theta \end{equation} $$
角括弧の中身をよく見てください。これは $E[e^{s\gamma}]$ で $s = -1/\sin^2\theta$ としたもの、すなわちモーメント母関数そのものです。つまり、
$$ \begin{equation} \bar{P}_b = \frac{1}{\pi}\int_0^{\pi/2} M_{\gamma}\!\left(-\frac{1}{\sin^2\theta}\right)d\theta \end{equation} $$
これがMGF法の中心公式です。分布の密度関数を知らなくても、MGFさえわかれば平均BERが1重積分で書ける。

左の図はCraig表現 $(36)$ 式の被積分関数です。$\theta\to 0$ で $1/\sin^2\theta\to\infty$ となるため被積分関数はなめらかに0へ落ち、区間の端で発散するようなことはありません。この曲線の下の面積を $\pi$ で割ったものが $Q(\sqrt{2\gamma})$ で、実際 $\gamma=2$ なら数値積分の $2.275013\times10^{-2}$ が scipy の $Q$ 関数と小数点以下6桁まで一致します。右の図は $(40)$ 式の被積分関数を $\bar\gamma=10$ dB で描いたもので、色付き部分の面積を $\pi$ で割ると平均BERになります。$L$ が1→2→4 と増えるにつれて面積が $2.33\times10^{-2}\to1.60\times10^{-3}\to9.70\times10^{-6}$ と桁で縮んでいく様子が、ダイバーシチ効果を面積として目で見た姿です。
MRCの場合は $(22)$ 式から $M_\gamma(s) = (1-s\bar\gamma)^{-L}$ なので、
$$ \begin{equation} \bar{P}_b^{\mathrm{MRC}} = \frac{1}{\pi}\int_0^{\pi/2}\left(1 + \frac{\bar\gamma}{\sin^2\theta}\right)^{-L}d\theta \end{equation} $$
$\theta \in [0,\pi/2]$ の有限区間なので、数値積分は一瞬で終わります。しかもこの積分は解析的に実行でき、次の閉形式を与えます。
$$ \begin{equation} \bar{P}_b^{\mathrm{MRC}} = \left(\frac{1-\mu}{2}\right)^{L}\sum_{l=0}^{L-1}\binom{L-1+l}{l}\left(\frac{1+\mu}{2}\right)^{l}, \qquad \mu = \sqrt{\frac{\bar\gamma}{1+\bar\gamma}} \end{equation} $$
$L=1$ とすると和が1項だけになり $\bar{P}_b = (1-\mu)/2$ で、$(34)$ 式と一致します。検算が通りました。
MGF法の威力は、枝ごとに平均SNRが違う場合や相関がある場合にそのまま拡張できる点にあります。独立だが平均が違うなら $M_\gamma(s) = \prod_i (1-s\bar\gamma_i)^{-1}$ とするだけで、$(39)$ 式はそのまま使えます。この一般性は記事の後半で活用します。
高SNR漸近 — なぜ傾きが L になるのか
$(41)$ 式は正確ですが、そこから「傾き $L$」を読み取るのは少し骨が折れます。高SNR近似を作りましょう。$\bar\gamma \gg 1$ で $\mu \approx 1 – 1/(2\bar\gamma)$ なので、
$$ \begin{equation} \frac{1-\mu}{2}\approx\frac{1}{4\bar\gamma}, \qquad \frac{1+\mu}{2}\approx 1 \end{equation} $$
これを $(41)$ 式に代入すると、和の中の $((1+\mu)/2)^l$ はすべて1に近づき、二項係数の和だけが残ります。ここでホッケースティック恒等式
$$ \begin{equation} \sum_{l=0}^{L-1}\binom{L-1+l}{l} = \binom{2L-1}{L} \end{equation} $$
を使うと($L=2$ で $1+2=3=\binom{3}{2}$、$L=4$ で $1+4+10+20=35=\binom{7}{4}$ と確かめられます)、
$$ \begin{equation} \bar{P}_b^{\mathrm{MRC}} \approx \binom{2L-1}{L}\frac{1}{(4\bar\gamma)^{L}} \end{equation} $$
$\bar{P}_b \propto \bar\gamma^{-L}$ — これがダイバーシチの定量的表現です。両辺の常用対数をとると
$$ \begin{equation} 10\log_{10}\bar{P}_b = -L\cdot\left(10\log_{10}\bar\gamma\right) + \mathrm{const} \end{equation} $$
なので、横軸を $\bar\gamma$ [dB]、縦軸を BER の対数でプロットしたとき、曲線の傾きは $-L$ 桁 / 10 dB になります。$L=1$ なら10 dB でBERが1桁、$L=4$ なら10 dB で4桁改善します。この傾きこそがダイバーシチ次数 $L$ の可視化された姿です。
同じ結論は、$(24)$ 式の「原点近傍の密度」から直接出すこともできます。高SNRでは、誤りは $\gamma$ が小さい領域からしか生じないので、密度を原点近傍の $\gamma^{L-1}/((L-1)!\bar\gamma^L)$ で置き換えると
$$ \begin{equation} \bar{P}_b \approx \frac{1}{(L-1)!\bar\gamma^{L}}\int_0^{\infty}Q(\sqrt{2\gamma})\gamma^{L-1}d\gamma = \frac{\Gamma(L+\frac12)}{2L\sqrt{\pi}\,(L-1)!\,\bar\gamma^{L}} \end{equation} $$
となり、$\bar\gamma^{-L}$ 則が即座に見えます。$L=1$ では $\Gamma(3/2)/(2\sqrt\pi) = (\sqrt\pi/2)/(2\sqrt\pi) = 1/4$ で $(35)$ 式と一致し、$L=2$ では $\Gamma(5/2)/(4\sqrt\pi)=3/16$ で $(44)$ 式の $\binom{3}{2}/4^2 = 3/16$ と一致します。BER曲線の傾きを決めているのは、合成SNRの分布が原点でどれだけ薄いか、ただそれだけなのです。
理論が揃ったので、次は「アンテナを $L$ 本にすると何 dB 得か」という実務的な問いに、2種類の利得として答えを出します。
アレイ利得とダイバーシチ利得を分離する
$(44)$ 式は $\bar{P}_b \approx (G_c\bar\gamma)^{-G_d}$ の形に整理できます。ここで $G_d = L$ をダイバーシチ利得(diversity gain)、$G_c$ を符号化利得(coding gain)と呼びます。$G_d$ はBER曲線の傾き、$G_c$ は曲線の左右方向のシフトを表します。
一方、無線工学ではもう一つ「アレイ利得(array gain)」という言葉が使われます。こちらは合成後の平均SNRの上昇分です。$(16)$ 式から
$$ \begin{equation} E[\gamma_{\mathrm{MRC}}] = \sum_{i=1}^{L}E[\gamma_i] = L\bar\gamma \end{equation} $$
なので、MRCのアレイ利得はちょうど $L$ 倍、dBで $10\log_{10}L$ です。$L=2$ で 3.01 dB、$L=4$ で 6.02 dB。この利得はフェージングとは無関係で、AWGNチャネルでも同じだけ得られます。$L$ 本のアンテナで同じ信号を集めているのだから、集めた電力の合計が $L$ 倍になるのは当たり前、というだけの話です。
つまり、$L$ 本にして得られる利得は次の2つの重ね合わせです。
- アレイ利得: 平均受信電力が $L$ 倍になる。BER曲線が右から左へ $10\log_{10}L$ dB 平行移動する。フェージングの有無に依らない。
- ダイバーシチ利得: 深いフェードの確率が激減する。BER曲線の傾き自体が急峻になる。フェージングがあるときにだけ意味を持つ。
この2つが「平行移動」と「傾きの変化」としてどう見えるのかを、BER曲線の上で直接示したのが次の図です。

青が $L=1$ の曲線、灰色の破線がそれを $10\log_{10}2 = 3.01$ dB だけ左へ平行移動しただけの仮想曲線(=もしアレイ利得しか得られなかったら、という仮定)、オレンジが実際の $L=2$ MRCです。BER $=10^{-3}$ の水平線との交点を見ると、青が 23.97 dB、灰色が 20.96 dB、オレンジが 11.09 dB。青→灰色の 3.01 dB がアレイ利得、灰色→オレンジの 9.86 dB がダイバーシチ利得です。灰色の破線が青と平行なままなのに対し、オレンジだけ傾きが2倍に立っていることが、両者の質的な違いを一目で示しています。
この2つを、$\bar{P}_b = 10^{-3}$ を達成するのに必要な平均枝SNRという実務的な指標で分解してみましょう。$(41)$ 式を数値的に解くと、次の表が得られます。
| 構成 | 所要 $\bar\gamma$ [dB] | $L=1$ 比の総利得 | うちアレイ利得 | うちダイバーシチ利得 |
|---|---|---|---|---|
| MRC $L=1$ | 23.97 | — | — | — |
| MRC $L=2$ | 11.09 | 12.87 dB | 3.01 dB | 9.86 dB |
| MRC $L=3$ | 6.55 | 17.42 dB | 4.77 dB | 12.64 dB |
| MRC $L=4$ | 4.03 | 19.93 dB | 6.02 dB | 13.91 dB |
この表は、無線リンク設計における最重要の教訓を含んでいます。2本にして得られる 12.87 dB のうち、電力を集めたことによる分はたった 3 dB しかない。 残りの 9.86 dB は「深い谷にはまらなくなった」という統計的な効果です。逆に言えば、AWGNのような安定した回線でアンテナを2本にしても 3 dB しか得しませんが、フェージング回線では 13 dB 近くも得をします。ダイバーシチはフェージングがあるからこそ価値がある技術なのです。
もう一つ興味深い見方があります。AWGNでBPSKが $10^{-3}$ を達成するのに必要なSNRは 6.79 dB です($Q(\sqrt{2\gamma})=10^{-3}$ より $\gamma = 4.77$)。これを基準に「フェージングによるペナルティ」を測ると、
- $L=1$: 所要23.97 dB、合成後平均SNRも 23.97 dB → ペナルティ 17.18 dB
- $L=2$: 所要11.09 dB、合成後平均SNRは 11.09+3.01 = 14.10 dB → ペナルティ 7.31 dB
- $L=4$: 所要4.03 dB、合成後平均SNRは 4.03+6.02 = 10.05 dB → ペナルティ 3.26 dB
枝を増やすほど、チャネルは「AWGNらしく」なっていきます。$L\to\infty$ では大数の法則により $\gamma_{\mathrm{MRC}}/L \to \bar\gamma$ が確率収束するので、フェージングは完全に消えてAWGNチャネルになります。ダイバーシチとは、ランダムなチャネルを平均化して決定論的なチャネルに近づける操作だと言い換えられます。この視点は、MIMOの空間多重やOFDMの周波数ダイバーシチを理解するときにも効きます。
理論を一通り追ったので、ここからは手を動かして確かめます。まずは最適重みの主張から。
具体例 — 2枝の数値で確かめる
数式の意味を体に入れるため、具体的な数値でMRCを計算してみましょう。$L=2$、$E_s/N_0 = 1$(0 dB)とし、ある瞬間のチャネルが
$$ h_1 = 0.3e^{j0.4\pi}, \qquad h_2 = 1.2e^{-j0.7\pi} $$
だったとします。各枝の瞬時SNRは $\gamma_1 = |h_1|^2 = 0.09$($-10.5$ dB)、$\gamma_2 = |h_2|^2 = 1.44$($1.6$ dB)です。枝1は深いフェードに入っています。
SC(選択合成)なら強いほうを選ぶので $\gamma_{\mathrm{SC}} = 1.44$(1.6 dB)。
MRCなら $(16)$ 式より $\gamma_{\mathrm{MRC}} = 0.09 + 1.44 = 1.53$(1.85 dB)。SCより 0.26 dB だけ良い。「たった0.26 dB か」と思うかもしれませんが、これは枝1がほとんど死んでいる瞬間だからです。両枝が同程度のとき(例えば $\gamma_1=\gamma_2=0.7$)は $\gamma_{\mathrm{MRC}}=1.4$ 対 $\gamma_{\mathrm{SC}}=0.7$ で 3 dB の差になります。MRCの優位は「両方そこそこ」のときに最大化されます。
EGCなら位相だけ補正して足すので、$\gamma_{\mathrm{EGC}} = (|h_1|+|h_2|)^2/2 = (0.3+1.2)^2/2 = 1.125$(0.51 dB)。この瞬間はSCよりも悪い。弱い枝1の雑音を等しく混ぜたぶん損をしています。EGCがSCに負けることは、片方が極端に弱いときには起こりうるのです(平均すればEGCのほうが良い)。
MRCの重みも書いておきましょう。$w_1^{*} = h_1^{*} = 0.3e^{-j0.4\pi}$、$w_2^{*} = h_2^{*} = 1.2e^{j0.7\pi}$。振幅比は $0.3 : 1.2 = 1 : 4$ で、枝2を4倍重く扱っています。電力比で言えば $1:16$ です。「良い枝を圧倒的に優先する」というMRCの性格がよく出ています。
ここまでの数値を1枚にまとめると次のようになります。

左の複素平面を見ると、$h_1$ と $h_2$ は長さも向きもまるで違い、そのまま足したら大きく打ち消し合うことがわかります。右の棒グラフでは、ブランチ1が単独では $-10.46$ dB とほぼ使い物にならない一方、MRCの $1.85$ dB がすべての方式の中で最も高くなっています。注目すべきはEGCの $0.51$ dB で、この瞬間に限ればSCの $1.58$ dB より1 dB 以上も悪いという点です。EGCは死んだ枝の雑音も等しく混ぜてしまうため、枝の品質が極端に偏った瞬間には弱いのです。ただしこれは1サンプルの話で、時間平均すればEGCがSCを上回ります。
数値の感触がつかめたところで、Pythonで統計的な性質を確認していきます。
Python実装1 — コーシー・シュワルツの等号を数値で確かめる
最初に確認すべきは、「$\bm{w}=\bm{h}$ が本当に最適か」です。ランダムな重みを大量に試して、$\bm{w}=\bm{h}$ を超えるものが一つも出ないことを見ます。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
rng = np.random.default_rng(11)
L = 4
h = (rng.standard_normal(L) + 1j * rng.standard_normal(L)) / np.sqrt(2) # 固定チャネル
EsN0 = 1.0
def out_snr(w, h, EsN0):
"""式(6): gamma(w) = |w^H h|^2 Es / (N0 ||w||^2)"""
return np.abs(np.vdot(w, h)) ** 2 * EsN0 / np.sum(np.abs(w) ** 2)
# ランダムな重みを20000本
W = (rng.standard_normal((20000, L)) + 1j * rng.standard_normal((20000, L)))
snr_rand = np.array([out_snr(w, h, EsN0) for w in W])
snr_mrc = out_snr(h, h, EsN0) # w = h
snr_egc = out_snr(np.exp(1j * np.angle(h)), h, EsN0) # 位相のみ補正
snr_sc = out_snr(np.eye(L)[np.argmax(np.abs(h))], h, EsN0)
plt.figure(figsize=(9, 4.5))
plt.hist(10 * np.log10(snr_rand), bins=80, color="steelblue", alpha=0.7, label="ランダムな重み 20000本")
for v, c, lab in [(snr_mrc, "r", "MRC (w=h)"), (snr_egc, "g", "EGC (位相のみ)"), (snr_sc, "m", "SC (最強枝)")]:
plt.axvline(10 * np.log10(v), color=c, lw=2, label=f"{lab}: {10*np.log10(v):.2f} dB")
plt.xlabel("合成出力SNR [dB]"); plt.ylabel("頻度")
plt.title("どんな重みを選んでもMRCを超えられない(コーシー・シュワルツの上界)")
plt.legend(); plt.grid(alpha=0.3); plt.tight_layout(); plt.show()
print(f"MRC上界 ||h||^2 = {np.sum(np.abs(h)**2):.4f}, 最大の乱択重み = {snr_rand.max():.4f}")

ヒストグラムは低いSNR側に大きく裾を引き、赤い縦線(MRC、$3.33$ dB)が分布の右端の壁になっています。20000本のランダムな重みのうち、赤線を超えたものは一本もありません(最大でも $\|\bm{h}\|^2=2.1525$ に対して $2.0633$ 止まり)。これがコーシー・シュワルツの上界 $\|\bm{h}\|^2$ の意味です。緑(EGC)と紫(SC)の線はいずれも赤より左にあり、しかもランダム重みの分布のかなり右側に位置しています。「そこそこ賢い重み付け」でもMRCには届かない一方、でたらめな重みよりははるかにマシ、という力関係が見て取れます。
上界の存在が確認できたので、次はその上界(=合成SNR)がフェージング下でどんな分布に従うかを見ます。
Python実装2 — γ_MRC の分布とアウテージ確率
$(23)$ 式のガンマ分布と、$(27)$ 式のアウテージ確率を、モンテカルロで検証します。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
from scipy.special import factorial
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
rng = np.random.default_rng(5)
N = 300000
gbar = 1.0 # 平均枝SNRを1に正規化して形だけ見る
fig, ax = plt.subplots(1, 2, figsize=(12, 4.6))
x = np.linspace(1e-3, 12, 400)
for L, c in zip([1, 2, 4, 8], ["C0", "C1", "C2", "C3"]):
h = (rng.standard_normal((N, L)) + 1j * rng.standard_normal((N, L))) / np.sqrt(2)
g = (np.abs(h) ** 2).sum(axis=1) * gbar
ax[0].hist(g, bins=200, range=(0, 12), density=True, histtype="step", color=c, lw=1.2)
pdf = x ** (L - 1) * np.exp(-x / gbar) / (factorial(L - 1) * gbar ** L) # 式(23)
ax[0].plot(x, pdf, color=c, ls="--", lw=2, label=f"L={L} 理論(ガンマ分布)")
ax[0].set_xlabel("合成SNR $\\gamma_{MRC}$ / 平均枝SNR"); ax[0].set_ylabel("確率密度")
ax[0].set_title("実線=シミュレーション, 破線=理論。原点付近が $\\gamma^{L-1}$ で薄くなる")
ax[0].legend(); ax[0].grid(alpha=0.3); ax[0].set_ylim(0, 1.05)
xth = np.logspace(-2, 0.5, 60) # gamma_th / gbar
for L, c in zip([1, 2, 4, 8], ["C0", "C1", "C2", "C3"]):
pout = 1 - np.exp(-xth) * sum(xth ** k / factorial(k) for k in range(L)) # 式(27)
ax[1].loglog(xth, pout, color=c, lw=2, label=f"L={L} 厳密")
ax[1].loglog(xth, xth ** L / factorial(L), color=c, ls=":", lw=1.5) # 式(28)
ax[1].set_xlabel("$\\gamma_{th}/\\bar{\\gamma}$"); ax[1].set_ylabel("アウテージ確率")
ax[1].set_title("点線=高SNR近似 $x^L/L!$。傾きがそのままダイバーシチ次数 L")
ax[1].set_ylim(1e-10, 1); ax[1].legend(); ax[1].grid(alpha=0.3, which="both")
plt.tight_layout(); plt.show()

左図では、ヒストグラム(実線)と理論のガンマ分布(破線)が完全に重なっており、$(23)$ 式が正しいことが確認できます。注目すべきは形の変化です。$L=1$ は原点で最大値をとる指数分布ですが、$L=2$ 以降は原点で密度が0になり、$L=8$ では山の中心が平均値($=8$)付近まで移動して、原点付近の確率がほとんど消えます。これは大数の法則が効き始めた証拠で、相対的なばらつき(標準偏差÷平均 $=1/\sqrt{L}$)が枝を増やすほど小さくなり、「ほぼ一定のSNR」に近づいていきます。
右図の両対数プロットでは、各 $L$ の直線の傾きが $L$ に一致しています。$L=4$ なら $x$ を1桁下げるとアウテージ確率は4桁下がる。点線で描いた近似 $x^L/L!$ は、$x < 0.3$ 程度の実用領域で厳密解にぴったり重なっており、リンクバジェット計算にそのまま使える精度です。
分布がわかったので、いよいよ本命のBER曲線を描きます。
Python実装3 — BER曲線と傾きLの検証
$(41)$ 式の閉形式、$(44)$ 式の漸近式、そしてモンテカルロシミュレーションの3つを重ねます。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
from scipy.special import erfc, comb
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
Qf = lambda x: 0.5 * erfc(x / np.sqrt(2))
def ber_mrc(gbar, L): # 式(41) 閉形式
mu = np.sqrt(gbar / (1.0 + gbar))
s = sum(comb(L - 1 + l, l, exact=True) * ((1 + mu) / 2) ** l for l in range(L))
return ((1 - mu) / 2) ** L * s
def ber_asym(gbar, L): # 式(44) 高SNR漸近
return comb(2 * L - 1, L, exact=True) / (4.0 * gbar) ** L
rng = np.random.default_rng(2)
snr_dB = np.arange(0, 31, 1.0)
plt.figure(figsize=(9, 6.5))
for L, c in zip([1, 2, 4], ["C0", "C1", "C2"]):
th = np.array([ber_mrc(10 ** (d / 10), L) for d in snr_dB])
asy = np.array([ber_asym(10 ** (d / 10), L) for d in snr_dB])
plt.semilogy(snr_dB, th, color=c, lw=2, label=f"MRC L={L} 理論(式41)")
plt.semilogy(snr_dB, asy, color=c, ls=":", lw=1.4, label=f"L={L} 漸近 $\\bar\\gamma^{{-{L}}}$")
# モンテカルロ(誤りが十分観測できる範囲だけ点を打つ)
mc = []
for d in snr_dB:
if ber_mrc(10 ** (d / 10), L) < 3e-6:
mc.append(np.nan); continue
h = (rng.standard_normal((200000, L)) + 1j * rng.standard_normal((200000, L))) / np.sqrt(2)
g = (np.abs(h) ** 2).sum(axis=1) * 10 ** (d / 10)
mc.append(np.mean(Qf(np.sqrt(2 * g))))
plt.semilogy(snr_dB, mc, "o", color=c, ms=4.5, mfc="none")
plt.semilogy(snr_dB, Qf(np.sqrt(2 * 10 ** (snr_dB / 10))), "k--", lw=1.5, label="AWGN(フェージング無し)")
plt.xlabel("1ブランチあたりの平均SNR $\\bar{\\gamma}$ [dB]"); plt.ylabel("平均ビット誤り率")
plt.title("MRCのBER曲線 — 傾きがダイバーシチ次数 L に一致する")
plt.ylim(1e-9, 0.6); plt.grid(alpha=0.3, which="both"); plt.legend(fontsize=8.5); plt.tight_layout(); plt.show()

このグラフには読み取るべき点が3つあります。第一に、丸印(モンテカルロ)が実線(理論)に完全に乗っています。$(41)$ 式の閉形式が正しいことの実証です。第二に、点線で描いた漸近式 $(44)$ は、$\bar\gamma$ が10 dB を超えたあたりから実線とほぼ区別がつきません。たとえば $L=2$、$\bar\gamma=10$ dB で厳密値 $1.599\times10^{-3}$ に対し漸近値 $1.875\times10^{-3}$、20 dB では $1.844\times10^{-5}$ 対 $1.875\times10^{-5}$ と、実用上十分な精度です。第三に、傾きが $L$ に比例して急峻になっています。実際に $\bar\gamma = 20$ dB と 30 dB のBER比を対数でとると、$L=1$ で 0.997 桁、$L=2$ で 1.994 桁、$L=4$ で 3.986 桁 — 理論値 $L$ にきれいに一致します。
黒破線のAWGN曲線と比べると、$L=1$ のレイリー曲線がいかに緩慢かがわかります。そして $L$ を増やすほどレイリー曲線はAWGN曲線の急峻さに近づいていく。前節で述べた「ダイバーシチはチャネルをAWGN化する」という主張が、目で見える形になりました。
では、この総改善量をアレイ利得とダイバーシチ利得に分けてみましょう。
Python実装4 — 2種類の利得を分離して描く
import numpy as np
import matplotlib, matplotlib.pyplot as plt
from scipy.special import erfc, comb
from scipy.optimize import brentq
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
def ber_mrc(gbar, L):
mu = np.sqrt(gbar / (1.0 + gbar))
return ((1 - mu) / 2) ** L * sum(comb(L - 1 + l, l, exact=True) * ((1 + mu) / 2) ** l for l in range(L))
target = 1e-3
Ls = [1, 2, 3, 4, 6, 8]
req = [brentq(lambda d: np.log(ber_mrc(10 ** (d / 10), L)) - np.log(target), -10, 60) for L in Ls]
array_gain = [10 * np.log10(L) for L in Ls] # 平均SNRの底上げ
total_gain = [req[0] - r for r in req] # L=1 比の総利得
div_gain = [t - a for t, a in zip(total_gain, array_gain)] # 残りがダイバーシチ利得
fig, ax = plt.subplots(1, 2, figsize=(12, 4.8))
ax[0].plot(Ls, req, "o-", lw=2, color="C3")
for L, r in zip(Ls, req):
ax[0].annotate(f"{r:.1f} dB", (L, r), textcoords="offset points", xytext=(6, 6), fontsize=9)
ax[0].set_xlabel("ブランチ数 L"); ax[0].set_ylabel("所要平均枝SNR [dB]")
ax[0].set_title("BER=$10^{-3}$ に必要な平均SNR(枝あたり)"); ax[0].grid(alpha=0.3)
w = 0.6
ax[1].bar(Ls, array_gain, w, color="C0", label="アレイ利得 $10\\log_{10}L$(電力の足し算)")
ax[1].bar(Ls, div_gain, w, bottom=array_gain, color="C1", label="ダイバーシチ利得(谷が消える効果)")
for L, a, d in zip(Ls, array_gain, div_gain):
if a + d > 0:
ax[1].text(L, a + d + 0.4, f"計{a+d:.1f} dB", ha="center", fontsize=9)
ax[1].set_xlabel("ブランチ数 L"); ax[1].set_ylabel("L=1 に対する利得 [dB]")
ax[1].set_title("総利得の内訳 — 大半はダイバーシチ利得"); ax[1].legend(fontsize=9); ax[1].grid(alpha=0.3, axis="y")
plt.tight_layout(); plt.show()

左図の所要SNRは、$L=1$ の 24.0 dB から $L=2$ で 11.1 dB へ一気に下がり、その後は $L=3$ で 6.6 dB、$L=4$ で 4.0 dB と改善幅が縮んでいきます。1本目から2本目への効果が圧倒的に大きく、以降は逓減する — これはアンテナ本数を決めるときの実務的な指針そのものです。$L=8$ まで増やしても $L=4$ からの追加改善はわずかで、コストに見合わないことが多いでしょう。
右図の積み上げ棒が本記事のハイライトです。$L=2$ の総利得 12.9 dB のうち、青(アレイ利得)はわずか 3.0 dB。残り 9.9 dB はオレンジ(ダイバーシチ利得)で、これは「電力を集めた」からではなく「深いフェードに同時に落ちなくなった」ことによる利得です。$L$ が増えるとオレンジの伸びも鈍りますが、常に青より大きい。フェージング環境でアンテナを増やす価値の大半は、電力ではなく統計にあるという結論が、この図に集約されています。
利得の内訳がわかったので、次はMRC以外の合成方式との差を定量化します。
Python実装5 — SC・EGCとの比較
選択合成(SC)と等利得合成(EGC)の理論式も用意して、3方式を同じ図に重ねます。SCの平均BERは、$\gamma_{\mathrm{SC}}$ のCDFが $(1-e^{-\gamma/\bar\gamma})^L$ であることから二項展開で閉形式になります。EGCは $L=2$ に限り閉形式 $\bar{P}_b = \frac{1}{2}[1-\sqrt{1-(1+\bar\gamma)^{-2}}]$ が知られており、一般の $L$ ではシミュレーションで評価します。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
from scipy.special import erfc, comb
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
Qf = lambda x: 0.5 * erfc(x / np.sqrt(2))
def ber_mrc(gbar, L):
mu = np.sqrt(gbar / (1.0 + gbar))
return ((1 - mu) / 2) ** L * sum(comb(L - 1 + l, l, exact=True) * ((1 + mu) / 2) ** l for l in range(L))
def ber_sc(gbar, L): # (1-exp(-g/gbar))^L を二項展開して項別積分
tot = 0.0
for k in range(L):
ge = gbar / (k + 1)
tot += comb(L - 1, k, exact=True) * (-1) ** k * (L / (k + 1)) * 0.5 * (1 - np.sqrt(ge / (1 + ge)))
return tot
rng = np.random.default_rng(21)
snr_dB = np.arange(0, 26, 1.0)
N = 400000
L = 4
plt.figure(figsize=(9, 6.2))
sim = {"MRC": [], "EGC": [], "SC": []}
for d in snr_dB:
gbar = 10 ** (d / 10)
h = (rng.standard_normal((N, L)) + 1j * rng.standard_normal((N, L))) / np.sqrt(2)
a = np.abs(h)
sim["MRC"].append(np.mean(Qf(np.sqrt(2 * (a ** 2).sum(1) * gbar))))
sim["EGC"].append(np.mean(Qf(np.sqrt(2 * (a.sum(1)) ** 2 / L * gbar))))
sim["SC"].append(np.mean(Qf(np.sqrt(2 * (a ** 2).max(1) * gbar))))
plt.semilogy(snr_dB, [ber_mrc(10 ** (d / 10), L) for d in snr_dB], "C2-", lw=2, label="MRC 理論")
plt.semilogy(snr_dB, [ber_sc(10 ** (d / 10), L) for d in snr_dB], "C3-", lw=2, label="SC 理論")
for k, c in zip(["MRC", "EGC", "SC"], ["C2", "C0", "C3"]):
plt.semilogy(snr_dB, np.where(np.array(sim[k]) > 0, sim[k], np.nan), "o", color=c, ms=4, mfc="none",
label=f"{k} シミュレーション")
plt.semilogy(snr_dB, [ber_mrc(10 ** (d / 10), 1) for d in snr_dB], "k--", lw=1.3, label="合成なし (L=1)")
plt.xlabel("1ブランチあたりの平均SNR [dB]"); plt.ylabel("平均ビット誤り率")
plt.title(f"L={L} における3方式の比較 — 傾きは同じ、左右のずれだけが違う")
plt.ylim(1e-8, 0.6); plt.grid(alpha=0.3, which="both"); plt.legend(fontsize=9); plt.tight_layout(); plt.show()

この図の最も重要な発見は、3方式の曲線が平行だという点です。MRC・EGC・SCのいずれも傾きは $L=4$ で、ダイバーシチ次数は同じ。違うのは左右方向のオフセットだけです。$L=4$、$\bar\gamma=10$ dB でのBERはMRCが $9.7\times10^{-6}$、EGCが $2.0\times10^{-5}$、SCが $1.5\times10^{-4}$ でした。EGCはMRCの約2倍、SCは約15倍のBERです。傾き4の曲線でBERが2倍違うのは 0.75 dB、15倍違うのは 2.9 dB のSNR差に相当します。
この差は解析的にも説明できます。平均合成SNRを比べると、
$$ E[\gamma_{\mathrm{MRC}}] = L\bar\gamma, \quad E[\gamma_{\mathrm{EGC}}] = \left[1+(L-1)\frac{\pi}{4}\right]\bar\gamma, \quad E[\gamma_{\mathrm{SC}}] = \left(\sum_{k=1}^{L}\frac{1}{k}\right)\bar\gamma $$
です(EGCの係数は $E[|h_i|]=\sqrt{\pi}/2$ から、SCの調和数は最大値の期待値から出てきます)。EGCのMRCに対する漸近的な損失は $10\log_{10}\!\left[L/(1+(L-1)\pi/4)\right]$ dB で、$L=2$ で 0.49 dB、$L=4$ で 0.76 dB、$L\to\infty$ でも $10\log_{10}(4/\pi) = 1.05$ dB にしかなりません。EGCはMRCの1 dB 以内という有名な事実です。振幅推定を省いてもほとんど損しないので、チャネル振幅の推定が難しい系ではEGCが実用的な選択肢になります。
一方SCは、平均合成SNRが調和数でしか増えません($L=4$ で 2.08 倍 = 3.2 dB、MRCの 6.0 dB に対して 2.8 dB 損)。それでもダイバーシチ次数は $L$ のままなので、「傾きは稼げるが左右のオフセットで損をする」という位置づけです。SCの利点は、RFチェーンを1本しか動かさなくてよい(アンテナ切替だけで済む)という実装コストにあります。
理論と理想条件での比較は済みました。しかし実際のシステムでは、枝が相関したり、チャネル推定が誤ったりします。最後にその影響を見ておきましょう。
実務での落とし穴 — 相関・不等SNR・CSI誤差・干渉
枝が相関するとダイバーシチ次数が落ちる
アンテナ間隔が狭いと、$h_1$ と $h_2$ が独立でなくなります。$\bm{h}\sim\mathcal{CN}(\bm{0},\bm{R})$($\bm{R}$ は相関行列、対角は1)とすると、固有値分解 $\bm{R}=\bm{U}\bm{\Lambda}\bm{U}^{H}$ を使って $\bm{h}=\bm{U}\bm{\Lambda}^{1/2}\bm{z}$($\bm{z}\sim\mathcal{CN}(\bm{0},\bm{I})$)と書けるので、
$$ \begin{equation} \gamma_{\mathrm{MRC}} = \bar\gamma\|\bm{h}\|^2 = \bar\gamma\sum_{i=1}^{L}\lambda_i|z_i|^2 \end{equation} $$
となります。つまり相関のある $L$ 枝は、平均SNRが $\lambda_i\bar\gamma$ の独立な $L$ 枝と等価です。MGFは $M_\gamma(s)=\prod_i(1-s\lambda_i\bar\gamma)^{-1}$ なので、$(39)$ 式にそのまま入れられます。
ここから2つの重要な帰結が出ます。第一に、アレイ利得は相関があっても変わりません。$\sum_i\lambda_i = \mathrm{tr}(\bm{R}) = L$ なので、平均合成SNRは常に $L\bar\gamma$ です。第二に、ダイバーシチ次数は $\bm{R}$ のランクに等しい。ゼロ固有値があるとその方向の枝は実質的に消えます。極端な例として完全相関($\rho=1$)なら $\bm{R}$ のランクは1で、$\lambda=(L,0,\dots,0)$ となり、ダイバーシチ次数は1に落ちます。それでもアレイ利得 $10\log_{10}L$ dB は残る、というのが面白いところです。

左図で $\rho=0$(緑)と $\rho=0.5$(青)はほぼ重なっており、相関係数が 0.5 程度なら実害がないことがわかります。ところが $\rho=0.9$(オレンジ)、$\rho=0.99$(赤)と上げていくと曲線が右へ倒れ、$\rho=0.99$ では黒破線(1本のみ)とほぼ平行、つまり傾きが実質1に近づきます。右図がその理由で、$\rho$ が1に近づくと第2固有値 $1-\rho$ が 0.01 まで潰れ、2本目の枝が実質的に消えてしまうのです。それでも2つの固有値の和は常に2なので、平均合成SNRが $2\bar\gamma$ である(アレイ利得 3 dB が保たれる)ことも棒グラフから読み取れます。
$L=2$、相関係数 $\rho$ の場合の固有値は $1+\rho$ と $1-\rho$ です。$\bar\gamma=20$ dB でのBERを計算すると、$\rho=0$ で $1.84\times10^{-5}$、$\rho=0.5$ で $2.45\times10^{-5}$、$\rho=0.9$ で $9.07\times10^{-5}$ でした。傾き2の曲線ではBERが $r$ 倍悪化することが $10\log_{10}(r)/2$ dB の損失に相当するので、$\rho=0.5$ の劣化は 0.6 dB 程度と軽微ですが、$\rho=0.9$ になると約 3.5 dB を失います。「アンテナ間隔は $0.5\lambda$ 以上」という設計ルールは、$\rho$ を 0.5 程度以下に抑えるための経験則です。
枝ごとに平均SNRが違うとき
実際のシステムでは、アンテナのパターンや配置の都合で枝ごとの平均SNR $\bar\gamma_i$ が揃わないことがよくあります。この場合のMGFは $\prod_i(1-s\bar\gamma_i)^{-1}$ で、$(39)$ 式で評価できます。$L=2$、$\bar\gamma_1 = 10$(10 dB)に固定して $\bar\gamma_2$ を変えると、BERは次のようになります。
| $\bar\gamma_2$ | BER | 単独($L=1$)比 |
|---|---|---|
| $10$(同じ) | $1.60\times10^{-3}$ | 14.6倍改善 |
| $2.5$($-6$ dB) | $5.22\times10^{-3}$ | 4.5倍改善 |
| $1.0$($-10$ dB) | $9.58\times10^{-3}$ | 2.4倍改善 |
| $0.1$($-20$ dB) | $2.00\times10^{-2}$ | 1.2倍改善 |
| 単独 | $2.33\times10^{-2}$ | — |

左図で、枝2が $-20$ dB 弱い赤い曲線は、実用的なSNR領域(0〜20 dB)では黒破線(枝1のみ)とほとんど平行で、2次ダイバーシチの傾きがまったく見えていません。それでも 25〜30 dB まで行けば徐々に立ち上がり始めます。右図はこれを改善倍率で表したもので、枝2が同等なら 14.6 倍改善するのに対し、$-10$ dB 弱いと 2.4 倍、$-20$ dB では 1.2 倍と、ほぼ「足しても変わらない」水準まで落ちます。弱い枝の追加は、原理上のダイバーシチ次数と実感できる改善量がまったく別物だということです。
弱い枝でも「無いよりはマシ」であり、しかも $\bar\gamma_2 > 0$ である限り漸近的なダイバーシチ次数は2のままです(MGFの分母の次数が2だから)。ただし2次の傾きが現れるSNR領域が高SNR側にずれるので、実用的なSNR領域では1次に見えてしまいます。「原理的には2次ダイバーシチだが実用域では効いていない」という状況は、弱い枝を安易に追加したときによく起こる罠です。
チャネル推定誤差の影響
MRCは $\bm{w}=\bm{h}$ を要求しますが、実際には推定値 $\hat{\bm{h}} = \bm{h}+\bm{e}$ しか手に入りません。$\bm{w}=\hat{\bm{h}}$ を使うと、$(6)$ 式より実効SNRは $|\hat{\bm{h}}^{H}\bm{h}|^2/\|\hat{\bm{h}}\|^2 \cdot (E_s/N_0)$ になり、$\hat{\bm{h}}$ が $\bm{h}$ からずれるぶんだけ目減りします。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
from scipy.special import erfc
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
Qf = lambda x: 0.5 * erfc(x / np.sqrt(2))
rng = np.random.default_rng(31)
N, L = 800000, 2
snr_dB = np.arange(0, 26, 2.0)
plt.figure(figsize=(9, 5.8))
for s2, c, lab in [(0.0, "C2", "完全CSI"), (0.05, "C1", "推定誤差 $\\sigma_e^2=0.05$"),
(0.2, "C3", "推定誤差 $\\sigma_e^2=0.2$")]:
ber = []
for d in snr_dB:
gbar = 10 ** (d / 10)
h = (rng.standard_normal((N, L)) + 1j * rng.standard_normal((N, L))) / np.sqrt(2)
e = (rng.standard_normal((N, L)) + 1j * rng.standard_normal((N, L))) / np.sqrt(2) * np.sqrt(s2)
w = h + e # 推定値を重みに使う
geff = np.abs((np.conj(w) * h).sum(1)) ** 2 / (np.abs(w) ** 2).sum(1) * gbar
ber.append(np.mean(Qf(np.sqrt(2 * geff))))
plt.semilogy(snr_dB, ber, "o-", color=c, lw=2, ms=4, label=lab)
plt.xlabel("1ブランチあたりの平均SNR [dB]"); plt.ylabel("平均ビット誤り率")
plt.title("チャネル推定誤差はダイバーシチの傾きを潰す(L=2)")
plt.ylim(1e-6, 0.6); plt.grid(alpha=0.3, which="both"); plt.legend(); plt.tight_layout(); plt.show()

完全CSIの曲線は傾き2できれいに落ちていきますが、推定誤差を入れると高SNR側で傾きが寝てきます。$\sigma_e^2=0.05$(推定誤差電力がチャネル電力の5%)のとき、$\bar\gamma=20$ dB でのBERは $1.3\times10^{-4}$ で、完全CSIの $1.7\times10^{-5}$ に対して約8倍悪化しました。10 dB から 20 dB へのBER改善量も、完全CSIの約2.0桁に対して約1.3桁まで落ちています。$\sigma_e^2=0.2$ ではさらに顕著で、同区間の改善は約1.1桁 — 傾きはほぼ1になってしまいます。低SNR側では3本の曲線がほぼ重なっていることにも注目してください。推定誤差が効くのは高SNR側だけなのです。
理由は明快です。推定誤差が一定電力で残っていると、信号電力を上げても「重みのずれ」による損失は減らないので、高SNR側で誤差項が支配的になり、実質的なSNRが頭打ちになります。ダイバーシチ利得は、チャネル推定精度がSNRとともに向上して初めて維持されるのです。実装上は、パイロット密度・推定フィルタの帯域・ドップラーによる推定値の陳腐化(outdated CSI)が効いてきます。特に高速移動時は、推定した瞬間と使う瞬間でチャネルが変わってしまうため、$\sigma_e^2$ が実効的に大きくなります。
干渉があるときはMRCは最適でない
最後に、実務で最も重要な注意点を繰り返します。MRCの最適性は「雑音が枝間で無相関」という仮定に完全に依存しています。同一チャネル干渉(他セル、他ユーザ)があると、干渉はアンテナ間で空間的に相関します(同じ方向から来るので当然です)。このとき最適な重みは $(19)$ 式の $\bm{w}=\bm{R}_n^{-1}\bm{h}$ であり、MRCの $\bm{w}=\bm{h}$ ではありません。$\bm{R}_n^{-1}$ は干渉の到来方向にヌルを形成する働きをし、これがIRC(干渉抑圧合成)です。セル端で干渉が支配的な環境では、IRCはMRCに対して数 dB から十数 dB の差をつけます。
「MRCは最適である」という言明は、常に「白色雑音の下では」という但し書き付きで覚えておくべきです。
まとめ
本記事では、最大比合成(MRC)を定義から高SNR漸近まで通して導出しました。
- 最適重みはチャネルの複素共役: 合成出力SNR $\gamma(\bm{w}) = |\bm{w}^{H}\bm{h}|^2E_s/(N_0\|\bm{w}\|^2)$ にコーシー・シュワルツの不等式を適用すると $\gamma \le \|\bm{h}\|^2E_s/N_0$ が得られ、等号は $\bm{w}\propto\bm{h}$ のときのみ成立します。射影で証明すると「重みはチャネルを測る物差しの向き」という幾何的意味が見えます。
- 合成SNRは枝SNRの和: $\gamma_{\mathrm{MRC}}=\sum_i\gamma_i$。この単純な式が、深いフェードが埋まる理由を説明します。重み $h_i^{*}$ は「位相をそろえる」役と「品質で重み付けする」役を同時に担っています。
- 分布は自由度 $2L$ のカイ二乗(=ガンマ分布): 原点近傍で $f(\gamma)\propto\gamma^{L-1}$ と薄くなることが、ダイバーシチの本質です。
- BERはMGF法で解ける: CraigのQ関数表現を使うと $\bar{P}_b=\frac{1}{\pi}\int_0^{\pi/2}M_\gamma(-1/\sin^2\theta)d\theta$ となり、閉形式 $(41)$ と高SNR漸近 $\bar{P}_b\approx\binom{2L-1}{L}(4\bar\gamma)^{-L}$ が得られます。傾きが $L$ になる理由が式から読み取れます。
- 利得は2種類に分解できる: BER $=10^{-3}$ で $L=1\to2$ の改善 12.9 dB のうち、アレイ利得は 3.0 dB、残り 9.9 dB がダイバーシチ利得です。フェージング環境でアンテナを増やす価値の大半は統計的な効果にあります。
- SC・EGCとの差はオフセットだけ: 3方式とも傾きは $L$ で同じ。EGCの損失は高SNRで最大 1.05 dB、SCは $L=4$ で 3 dB 程度です。振幅重み付けより位相合わせのほうがはるかに重要だとわかります。
- 現実では相関・不等SNR・CSI誤差・干渉が効く: 相関はダイバーシチ次数を $\mathrm{rank}(\bm{R})$ まで落とし、CSI誤差は高SNRで傾きを潰します。干渉が支配的なら $\bm{w}=\bm{R}_n^{-1}\bm{h}$(IRC/MVDR)に切り替えるべきです。
MRCは「複数の観測を最適に融合する」という普遍的な問題の、最も見通しの良い解答です。同じ構造は、レーダーのコヒーレント積分、GNSSの多衛星測位、センサフュージョンにおける逆分散重み付き平均にも現れます。「分散の逆数で重み付けして足す」という原理を一度身につけると、分野を越えて再利用できます。
次のステップとして、以下の記事も参考にしてください。
- 受信ダイバーシティの合成方式 — 選択合成・等利得合成・最大比合成の理論と導出 — 3方式を横並びで比較したい方へ
- アンテナダイバーシティとは?マルチパスフェージング対策と合成方式(SC/MRC/EGC)を図解で解説 — 空間相関とアンテナ間隔の設計論
- 中上(Nakagami-m)フェージング分布の理論と導出と実装 — レイリー以外のフェージング統計でMRCを解析する
- マルチパスフェージングとダイバーシティ完全ガイド — 対策アンテナ・OFDM・MIMOの理論 — 周波数・時間ダイバーシチやMIMOへの展開
- ビット誤り率(BER)の計算と通信品質を解説 — 変調方式ごとのBER式の出発点