フェージングチャネル
マルチパス、レイリーフェージングとライスフェージング、ドップラーとコヒーレンス時間、遅延広がりとコヒーレンス帯域幅、そして2アンテナのダイバーシチがBER曲線をどう変えるかを、すべてnumpyでシミュレーションして理論と照合します
このレッスンで学ぶこと
- 与えられた速度と搬送波周波数から最大ドップラーシフトを計算し、シミュレーションしたフェージング過程からコヒーレンス時間を推定する
- numpyでレイリーフェージングとライスフェージングを生成し、深いフェードにある時間の割合を理論と照合する
- シミュレーションしたマルチパスチャネルの周波数相関を測定し、RMS遅延広がりとコヒーレンス帯域幅を関係づける
- AWGN、フラットレイリーフェージング、2ブランチの選択合成と最大比合成でBPSKをシミュレーションし、各曲線を閉形式のBERと照合する
ここまで、チャネルは雑音の乗った有線のようなものとして扱ってきました。無線チャネルはそうではありません。信号は複数の経路を通って受信機に届き、周囲の何かが動くたびに経路が変わります。受信電力は1波長に満たない距離で20 dB以上落ちることがあります。本レッスンは、前回のレッスンで整合フィルタ受信機を作り、それが実際の移動通信リンクではなぜ大幅に性能が落ちるのかを知りたい読者を対象としています。numpyでフェージングをシミュレーションし、時間方向と周波数方向でどれだけ速く変化するかを測定します。そのうえで、最も効果的な対策である2本目のアンテナを示します。
マルチパスとフェージングの2つのスケール
経路損失とシャドウイングは、数十波長にわたる平均受信電力を決めます。その上に小規模フェージングが重なります。小規模フェージングはマルチパスから生じます。マルチパスとは、異なる経路を通り、異なる遅延・位相・ドップラーシフトで到着する信号のコピーです。受信機は各瞬間にそれらのフェーザ和を受け取ります。コピーの位相がそろえば和は大きくなります。打ち消し合えば深いヌルに落ちます。2 GHzでは数センチメートル動くだけで位相の関係が入れ替わります。
チャネルの変動は2つの量で表せます。時間方向では、ドップラーシフトの広がりがフェージングの変化の速さを決めます。周波数方向では、経路遅延の広がりが帯域内でチャネル応答がどれだけ速く変わるかを決めます。順に見ていきます。
レイリーフェージングとライスフェージング
散乱経路が多数あり、どれも支配的でない場合、中心極限定理により複素チャネル利得 h は平均ゼロの複素ガウス分布になります。その振幅はレイリー分布に従い、電力 |h|² は指数分布に従います。これがレイリーフェージングです。指数分布から簡潔な規則が得られます。電力が平均の x 倍を下回る確率は 1 − exp(−x) です。x = 0.1(10 dB低下)では9.5%です。x = 0.01(20 dB低下)では1%です。レイリーフェージングのリンクは、時間の1%を平均より20 dB以上低い状態で過ごします。
定常的な見通し成分がある場合、利得はその定数に散乱成分を加えたものになります。このとき振幅はライス分布に従います。Kファクタは、見通し成分の電力と散乱成分の電力の比です。K = 0 ではレイリーフェージングとなり、K が大きくなるほどフェードは浅くなります。ライスフェージングを参照してください。
ドップラーとコヒーレンス時間
速度 v で移動する受信機では、進行方向に対して角度 α で到来する経路の周波数が (v/λ) cos α だけシフトします。真正面または真後ろからの経路で最大となり、これが最大ドップラーシフト fD = v fc / c です。50 km/h、2 GHzでは約93 Hzです。散乱体があらゆる方向にあると経路ごとにシフトが異なり、チャネルはおよそ 1/fD の時間スケールで変化します。
受信機の周囲で一様に散乱する場合(通常R. H. Clarkeの名を冠して呼ばれるモデル)、遅れ τ におけるチャネル利得の自己相関は J0(2π fD τ) です。これは第1種ベッセル関数です。コヒーレンス時間は、チャネルがほぼ同じ状態にとどまる遅れの長さです。定義は一つではありません。相関が0.5まで下がる遅れを採ると約 0.24/fD になります。別のしきい値を使う教科書では別の定数が示されるため、数値がどの定義によるものか必ず確認してください。
次のコードは、到来角と位相をランダムにした64本のパスの和としてこのモデルを構成します。フェードの統計を確認し、見通し成分を加えてライスチャネルを作り、遅れに対する相関を測定します。
import numpy as np
from scipy.special import j0
from scipy.optimize import brentq
rng = np.random.default_rng(7)
c = 299_792_458.0
fc = 2.0e9 # carrier, Hz
v = 50 / 3.6 # 50 km/h in m/s
fd = v * fc / c # maximum Doppler shift, Hz
fs = 2000.0 # channel sample rate, Hz (well above 2 fd)
t = np.arange(0, 20.0, 1 / fs) # 20 s of channel
# Clarke's model as a sum of M scattered paths with random arrival angles and phases.
M = 64
alpha = rng.uniform(0, 2 * np.pi, M)
phi = rng.uniform(0, 2 * np.pi, M)
h = np.exp(1j * (2 * np.pi * fd * np.outer(t, np.cos(alpha)) + phi)).sum(axis=1) / np.sqrt(M)
p = np.abs(h) ** 2 / np.mean(np.abs(h) ** 2) # power normalised to its mean
print(f"max Doppler shift: {fd:.1f} Hz")
for thr_db in (-10, -20):
thr = 10 ** (thr_db / 10)
print(f"time below {thr_db} dB: {np.mean(p < thr) * 100:.2f} % (Rayleigh theory {(1 - np.exp(-thr)) * 100:.2f} %)")
# Rician: add a steady line-of-sight component with K = 10 dB.
K = 10 ** (10 / 10)
h_ric = np.sqrt(K / (K + 1)) + np.sqrt(1 / (K + 1)) * h
p_ric = np.abs(h_ric) ** 2 / np.mean(np.abs(h_ric) ** 2)
print(f"Rician K = 10 dB, time below -10 dB: {np.mean(p_ric < 0.1) * 100:.2f} %")
# Time correlation of h against lag, compared with Clarke's J0(2 pi fd tau).
lags = np.arange(0, 41) # 0 to 20 ms in 0.5 ms steps
r = np.array([np.mean(h[k:] * np.conj(h[: h.size - k])).real for k in lags]) / np.mean(np.abs(h) ** 2)
tau = lags / fs
k = int(np.argmax(r < 0.5)) # first lag below 0.5, then interpolate
tau_half = tau[k - 1] + (r[k - 1] - 0.5) / (r[k - 1] - r[k]) * (tau[k] - tau[k - 1])
tc_theory = brentq(lambda x: j0(2 * np.pi * fd * x) - 0.5, 1e-6, 0.383 / fd)
print(f"correlation falls to 0.5 after {tau_half * 1e3:.2f} ms (J0 theory {tc_theory * 1e3:.2f} ms = {tc_theory * fd:.3f}/fd)")
print("lag (ms), simulated, J0")
for k in range(0, 41, 4):
print(f"{tau[k] * 1e3:.1f}, {r[k]:.3f}, {j0(2 * np.pi * fd * tau[k]):.3f}")
# Power over the first 58 ms, every 1 ms, for plotting.
print("t (ms), Rayleigh dB, Rician dB")
for k in range(0, 117, 2):
print(f"{t[k] * 1e3:.0f}, {10 * np.log10(p[k]):.1f}, {10 * np.log10(p_ric[k]):.1f}")
max Doppler shift: 92.7 Hz
time below -10 dB: 9.25 % (Rayleigh theory 9.52 %)
time below -20 dB: 0.90 % (Rayleigh theory 1.00 %)
Rician K = 10 dB, time below -10 dB: 0.02 %
correlation falls to 0.5 after 2.67 ms (J0 theory 2.61 ms = 0.242/fd)
lag (ms), simulated, J0
0.0, 1.000, 1.000
2.0, 0.701, 0.689
4.0, 0.068, 0.040
6.0, -0.367, -0.379
8.0, -0.322, -0.281
10.0, 0.007, 0.098
12.0, 0.215, 0.300
14.0, 0.124, 0.135
16.0, -0.084, -0.161
18.0, -0.144, -0.238
20.0, -0.020, -0.034
t (ms), Rayleigh dB, Rician dB
0, -15.3, 0.0
1, -11.4, 0.3
2, -7.0, 0.6
3, -4.2, 1.0
4, -2.5, 1.4
5, -1.3, 1.6
6, -0.4, 1.8
7, 0.6, 1.8
8, 1.4, 1.8
9, 2.0, 1.6
10, 2.1, 1.3
11, 1.5, 0.7
12, 0.4, -0.2
13, -0.7, -1.4
14, -0.3, -2.8
15, 1.8, -4.4
16, 3.8, -5.7
17, 5.1, -6.3
18, 5.4, -6.1
19, 4.7, -5.3
20, 2.6, -4.2
21, -1.4, -2.8
22, -8.1, -1.4
23, -4.9, -0.1
24, -0.6, 0.6
25, 0.8, 0.9
26, -0.1, 0.6
27, -3.6, -0.3
28, -7.7, -1.4
29, -2.3, -2.3
30, 1.8, -2.5
31, 3.5, -2.1
32, 3.3, -1.4
33, 1.0, -0.7
34, -4.5, 0.1
35, -4.9, 1.0
36, 1.7, 1.8
37, 5.1, 2.4
38, 6.5, 2.6
39, 6.7, 2.3
40, 5.6, 1.6
41, 3.5, 0.5
42, 0.4, -0.7
43, -3.0, -1.6
44, -5.4, -1.9
45, -7.3, -1.6
46, -10.6, -1.0
47, -14.6, -0.3
48, -10.2, 0.3
49, -6.0, 0.8
50, -3.4, 1.1
51, -1.3, 1.2
52, 0.4, 1.3
53, 1.5, 1.3
54, 1.6, 1.2
55, 0.2, 0.9
56, -3.6, 0.4
57, -15.1, -0.1
58, -9.3, -0.5
シミュレーションしたチャネルは、時間の9.25%で平均より10 dB以上低く、0.90%で20 dB以上低くなっています。理論値は9.52%と1.00%です。わずかな差は、記録が20 sと有限であることと、パスの本数が有限であることによります。K = 10 dBのライスチャネルが平均より10 dB下がるのは、時間のわずか0.02%です。
相関は2.67 msで0.5まで下がり、ベッセル関数による予測値2.61 msに近い値です。シミュレーションの相関は最初の数ミリ秒は J0 によく沿いますが、その後は外れていきます。64本のパスは遅れゼロ付近では一様散乱をよく近似しますが、裾の部分では近似が崩れます。
コヒーレンス時間は受信機の設計に関わります。パケットがコヒーレンス時間より短ければ、先頭で一度行ったチャネル推定が最後まで有効です。そうでなければ、受信機はパケットの途中でチャネルを追跡する必要があります。長いフレームでパイロットを全体に分散して配置するのはこのためです。ドップラー93 Hzでは、1 msのブロックは2.6 msのコヒーレンス時間に十分収まります。500 km/hではそうはなりません。
遅延広がりとコヒーレンス帯域幅
2つ目の変動は周波数方向です。経路の遅延が στ 秒にわたって広がっていると、チャネル応答 H(f) はおよそ 1/στ の周波数幅で変化します。RMS遅延広がりは、遅延を電力で重み付けした標準偏差です。コヒーレンス帯域幅は、H(f) の相関が保たれる周波数間隔です。
目安として、3GPP TR 38.901(Study on channel model for frequencies from 0.5 to 100 GHz)は、タップ遅延線モデルとクラスタ遅延線モデルをスケーリングするためのRMS遅延広がりの例を示しています。Release 19版(V19.5.0)のTable 7.7.3-1には、「very short」(非常に短い)から「very long」(非常に長い)までとして10 ns、30 ns、100 ns、300 ns、1000 nsが挙げられています。同報告書によれば、これらの値は代表的な5G評価シナリオの測定で見られる範囲を網羅しています。
次のコードは、一般的な簡易モデルである指数型の電力遅延プロファイルを持つランダムなマルチパスチャネルを生成します。このプロファイルでは、H(f) と H(f + Δf) の相関の大きさは 1/√(1 + (2π Δf στ)²) です。これは Δf = √3/(2π στ)、つまり約 0.28/στ で0.5まで下がります。コードは、TR 38.901の遅延広がりのうち3つの値について1000個のランダムなチャネルから相関を測定し、理論と比較します。
import numpy as np
rng = np.random.default_rng(7)
ts = 10e-9 # tap spacing 10 ns (100 MHz sample rate)
n_fft = 2048 # frequency grid spacing 100 MHz / 2048 = 48.8 kHz
df = 1 / (ts * n_fft)
def exp_pdp_channels(ds: float, n_real: int) -> np.ndarray:
"""Random tapped-delay-line channels with an exponential power delay profile, RMS delay spread ds."""
tau = np.arange(0, 10 * ds + ts, ts)
pdp = np.exp(-tau / ds)
pdp /= pdp.sum()
g = (rng.normal(size=(n_real, tau.size)) + 1j * rng.normal(size=(n_real, tau.size))) / np.sqrt(2)
return g * np.sqrt(pdp)
for ds in (30e-9, 100e-9, 300e-9):
taps = exp_pdp_channels(ds, 1000)
# RMS delay spread of the profile actually used (it is discretised and truncated)
tau = np.arange(taps.shape[1]) * ts
pw = np.mean(np.abs(taps) ** 2, axis=0)
mean_tau = np.sum(pw * tau) / pw.sum()
rms = np.sqrt(np.sum(pw * (tau - mean_tau) ** 2) / pw.sum())
H = np.fft.fft(taps, n_fft, axis=1) # frequency response of each realisation
# Frequency correlation |E[H(f) H*(f + k df)]| averaged over f and realisations
corr = np.array([np.abs(np.mean(H[:, : n_fft - k] * np.conj(H[:, k:]))) for k in range(400)])
corr /= corr[0]
k = int(np.argmax(corr < 0.5))
bc = (k - 1 + (corr[k - 1] - 0.5) / (corr[k - 1] - corr[k])) * df
bc_theory = np.sqrt(3) / (2 * np.pi * ds)
print(f"delay spread {rms * 1e9:5.1f} ns: 50 % coherence bandwidth {bc / 1e6:6.2f} MHz "
f"(exponential-profile theory {bc_theory / 1e6:6.2f} MHz)")
# One 300 ns channel across a 20 MHz band: how deep do the notches go?
H1 = np.fft.fftshift(np.fft.fft(exp_pdp_channels(300e-9, 1)[0], n_fft))
band = np.abs(np.arange(n_fft) - n_fft // 2) * df <= 10e6
g_db = 20 * np.log10(np.abs(H1[band]))
print(f"300 ns channel over 20 MHz: gain spread {g_db.max() - g_db.min():.1f} dB")
delay spread 29.7 ns: 50 % coherence bandwidth 9.62 MHz (exponential-profile theory 9.19 MHz)
delay spread 99.9 ns: 50 % coherence bandwidth 2.76 MHz (exponential-profile theory 2.76 MHz)
delay spread 299.0 ns: 50 % coherence bandwidth 0.92 MHz (exponential-profile theory 0.92 MHz)
300 ns channel over 20 MHz: gain spread 26.7 dB
測定したコヒーレンス帯域幅は式と一致しています。100 nsで2.76 MHz、300 nsで0.92 MHzです。30 nsではシミュレーションが9.62 MHz、理論が9.19 MHzとなります。これは、それほど短いプロファイルに対して10 nsのタップ間隔が粗いためです。最後の行は実用上の影響を示しています。300 nsのチャネル1つで、20 MHzの帯域内に26.7 dBの利得差が生じます。
これがフラットフェージングと周波数選択性フェージングの境目を決めます。コヒーレンス帯域幅よりずっと狭い信号は、帯域全体で一つの複素利得を受けます。これがフラットフェージングです。ずっと広い信号は、周波数ごとに異なる利得を受けます。時間領域では、これは前回のレッスンのアイパターンに現れるような符号間干渉になります。この300 nsのチャネルで20 MHzのシングルキャリア信号を送るには、等化器が必要です。直交周波数分割多重(OFDM)は、各副搬送波がフラットフェージングとみなせるほど狭くなるように帯域を分割することで、この問題を回避します。
フェージングが悪影響を及ぼす理由:レイリーフェージングにおけるBER
AWGNでは、BPSKのビット誤り率は Q(√(2 Eb/N0)) で、SNRに対して指数関数より速く減少します。フラットレイリーフェージングでは、瞬時SNRは平均値に指数分布の確率変数を掛けたものになります。この分布でAWGNのBERを平均すると (1 − √(γ/(1 + γ)))/2 となります。ここで γ は平均 Eb/N0 です。高SNRではこれは 1/(4γ) に近づきます。つまりBERは10 dBごとに10分の1にしか下がりません。原因は深いフェードです。誤りの大半は、チャネルが20 dB以上落ち込んでいるわずかな時間に発生し、そこでは送信電力を増やしてもほとんど効果がありません。
ダイバーシチ
ダイバーシチは、独立にフェージングした信号のコピーを複数、受信機に与えます。すべてのコピーが同時にフェードする確率は、1つがフェードする確率よりはるかに小さくなります。コピーは、異なるアンテナ(空間)、コヒーレンス時間より離れた異なる時刻、コヒーレンス帯域幅より離れた異なる周波数から得られます。一様散乱では、距離 d だけ離れた2本のアンテナのチャネル利得の相関は、同じベッセル関数 J0(2π d/λ) に従います。半波長では J0(π)、約 −0.30 です。2つの電力の相関はその2乗で約0.09なので、2つのフェードはほぼ独立です。本節では各ブランチが独立であると仮定します。
2本のアンテナを合成する古典的な方法は次の2つです。
- 選択合成は、その時点でチャネルが強い方のアンテナを使い、もう一方は無視します。
- 最大比合成(MRC)は、各アンテナの信号にそのチャネル利得の複素共役を重みとして掛け、足し合わせます。これにより各コピーの位相がそろい、それぞれが強さに応じて重み付けされ、出力SNRが最大になります。
独立なレイリーブランチが L 本あり、MRCを用いる場合、BPSKの誤り率は閉形式で表せます。下のコードにその式を示します。高SNRでは 1/γ の L 乗で減少します。2本のアンテナでは、BERは10 dBごとに100分の1近く下がります。次のコードは、AWGN、1アンテナ、2アンテナの選択合成、2アンテナのMRCをシミュレーションし、誤りが200個に達するか2000万ビットを送るまで誤りを数えます。
import numpy as np
from math import comb
from scipy.special import erfc
rng = np.random.default_rng(7)
chunk = 1_000_000 # bits per simulation chunk
ebn0_db = np.arange(0, 21, 2)
def q_func(x):
return 0.5 * erfc(x / np.sqrt(2))
def ber_rayleigh_mrc(g: float, L: int) -> float:
"""BPSK with L-branch maximal-ratio combining in independent Rayleigh fading. g = mean Eb/N0 per branch."""
mu = np.sqrt(g / (1 + g))
return ((1 - mu) / 2) ** L * sum(comb(L - 1 + k, k) * ((1 + mu) / 2) ** k for k in range(L))
def errors_in_chunk(ebn0: float, L: int, combine: str) -> int:
bits = rng.integers(0, 2, chunk)
s = 1.0 - 2.0 * bits # BPSK, Eb = 1
n0 = 1 / ebn0
if L == 0: # AWGN, no fading
y = s + rng.normal(0, np.sqrt(n0 / 2), chunk)
return int(np.sum((y < 0) != bits))
h = (rng.normal(size=(L, chunk)) + 1j * rng.normal(size=(L, chunk))) / np.sqrt(2)
w = (rng.normal(size=(L, chunk)) + 1j * rng.normal(size=(L, chunk))) * np.sqrt(n0 / 2)
r = h * s + w # each antenna sees its own fade and noise
if combine == "mrc": # weight each branch by its conjugate channel
z = np.sum(np.conj(h) * r, axis=0).real
else: # selection: keep the strongest branch only
best = np.argmax(np.abs(h), axis=0)
idx = np.arange(chunk)
z = (np.conj(h[best, idx]) * r[best, idx]).real
return int(np.sum((z < 0) != bits))
def simulate(ebn0: float, L: int, combine: str = "mrc", min_err: int = 200, max_bits: int = 20_000_000) -> float:
"""Count errors chunk by chunk until min_err errors or max_bits bits."""
err = n = 0
while err < min_err and n < max_bits:
err += errors_in_chunk(ebn0, L, combine)
n += chunk
return err / n
print("Eb/N0 dB, AWGN sim, AWGN th, Ray sim, Ray th, SC2 sim, MRC2 sim, MRC2 th")
for e_db in ebn0_db:
g = 10 ** (e_db / 10)
awgn_sim = simulate(g, 0) if e_db <= 10 else float("nan") # too few errors to count above 10 dB
row = [awgn_sim, q_func(np.sqrt(2 * g)),
simulate(g, 1), ber_rayleigh_mrc(g, 1),
simulate(g, 2, "sel"), simulate(g, 2), ber_rayleigh_mrc(g, 2)]
print(f"{e_db:2d}, " + ", ".join(f"{v:.2e}" for v in row))
Eb/N0 dB, AWGN sim, AWGN th, Ray sim, Ray th, SC2 sim, MRC2 sim, MRC2 th
0, 7.92e-02, 7.86e-02, 1.47e-01, 1.46e-01, 8.14e-02, 5.84e-02, 5.81e-02
2, 3.70e-02, 3.75e-02, 1.08e-01, 1.08e-01, 4.97e-02, 3.30e-02, 3.28e-02
4, 1.25e-02, 1.25e-02, 7.72e-02, 7.71e-02, 2.74e-02, 1.69e-02, 1.69e-02
6, 2.44e-03, 2.39e-03, 5.26e-02, 5.30e-02, 1.39e-02, 8.11e-03, 8.13e-03
8, 1.99e-04, 1.91e-04, 3.52e-02, 3.55e-02, 6.65e-03, 3.57e-03, 3.68e-03
10, 4.25e-06, 3.87e-06, 2.32e-02, 2.33e-02, 2.90e-03, 1.60e-03, 1.60e-03
12, nan, 9.01e-09, 1.51e-02, 1.51e-02, 1.28e-03, 6.45e-04, 6.74e-04
14, nan, 6.81e-13, 9.84e-03, 9.67e-03, 5.10e-04, 2.81e-04, 2.78e-04
16, nan, 2.27e-19, 6.02e-03, 6.16e-03, 2.02e-04, 1.24e-04, 1.14e-04
18, nan, 1.40e-29, 4.09e-03, 3.92e-03, 1.01e-04, 4.90e-05, 4.59e-05
20, nan, 1.04e-45, 2.50e-03, 2.48e-03, 3.77e-05, 2.09e-05, 1.84e-05
シミュレーションの各点は、いずれも理論曲線の近くにあります。右端での差は、各点で誤りが約200個に達した時点で打ち切っているためです。1アンテナのレイリーリンクは20 dBでも2.50 × 10⁻³にしか達せず、6 dBのAWGNリンクより悪い値です。2アンテナのMRCはこれをシミュレーションで2.09 × 10⁻⁵、理論で1.84 × 10⁻⁵まで下げます。同じアンテナあたりSNRで約2桁の改善です。10 dBから20 dBの間で、MRCの理論曲線は87分の1に下がり、漸近値である10 dBあたり100分の1に近づいています。選択合成はその中間にあり、20 dBで3.77 × 10⁻⁵です。ダイバーシチの傾きは同じですが、高SNRでのBERはMRCの約2倍になります。弱い方のアンテナが集めたエネルギーを捨ててしまうためです。
現代のシステムは3種類のダイバーシチをすべて同時に使います。複数の受信アンテナは空間ダイバーシチをもたらします。チャネル符号化とインタリーブは符号語を時間と周波数に分散させるため、深いフェードがあっても失われるのはその一部だけです。複数の送信アンテナは、さらに時空間ダイバーシチと空間多重を加えます。これは多入力多出力(MIMO)のハブの主題です。
演習
- 1番目のコードで、速度を120 km/h、搬送波周波数を3.5 GHzに変更してください。新しいドップラーシフトと、相関が0.5まで下がる遅れを報告し、0.242/fD と照合してください。
- 2番目のコードに、TR 38.901の1000 nsの値を追加し、そのコヒーレンス帯域幅を報告してください。30 kHzの副搬送波と、20 MHzのシングルキャリア信号にとって、それぞれ何を意味するでしょうか。
- 3番目のコードを L = 4 のMRCに拡張し、理論値には
ber_rayleigh_mrc(g, 4)を使ってください。どの Eb/N0 で10⁻⁴に達し、1アンテナと比べてどうでしょうか。
まとめ
- マルチパスにより、チャネル利得はフェーザの和になります。経路が多数あり支配的なものがない場合はレイリー分布となり、電力は時間の1%で平均より20 dB以上低くなります。
- 最大ドップラーシフト fD = v fc / c がコヒーレンス時間を決めます。ドップラー93 Hzではチャネルの相関が2.67 msで0.5まで下がり、J0 モデルと一致しました。
- RMS遅延広がりがコヒーレンス帯域幅を決めます。指数型プロファイルでは相関50%の点は 0.28/στ で、300 nsでは約0.92 MHzです。
- レイリーフェージングでは、BPSKのBERは10 dBごとに10分の1にしか下がりません。2アンテナのMRCでは10 dBごとに100分の1近く下がります。
さらに読む
- R. H. Clarke, “A statistical theory of mobile-radio reception”, Bell System Technical Journal, vol. 47, no. 6, 1968:移動無線受信の統計モデルに関する原論文。
- D. G. Brennan, “Linear diversity combining techniques”, Proceedings of the IRE, vol. 47, no. 6, 1959:線形ダイバーシチ合成方式の古典的な解析と比較。
- 3GPP TR 38.901, Study on channel model for frequencies from 0.5 to 100 GHz:5G NRの評価に使われるチャネルモデル。遅延広がりのスケーリング表を含む。
- A. Goldsmith, Wireless Communications, Cambridge University Press, 2005:「Statistical Multipath Channel Models」と「Diversity」の章を参照。
- D. Tse and P. Viswanath, Fundamentals of Wireless Communication, Cambridge University Press, 2005:「The wireless channel」と「Point-to-point communication」の章を参照。
訂正
- 2026年11月15日:Brennanの1959年の論文を、線形ダイバーシチ合成に関する原論文と説明していました。同論文の序論には、このテーマについてすでに多数の論文があると書かれているため、現在は合成方式の古典的な解析と比較として説明しています。