實(shí)戰(zhàn):從LS/MMSE到訓(xùn)練序列設(shè)計(jì)與工程避坑)
簡介面向通信與無線傳輸研究者的多輸入多輸出MIMO信道估計(jì)入門資源內(nèi)容圍繞基于訓(xùn)練序列的信道估計(jì)算法展開適合需要通過仿真驗(yàn)證導(dǎo)頻輔助估計(jì)原理的學(xué)生、工程師或通信方向初學(xué)者。壓縮包體積很小僅約4KB共包含5個MATLAB.m源碼文件分別承擔(dān)數(shù)據(jù)生成、調(diào)制映射、硬判決以及兩種最小二乘LS信道估計(jì)功能代碼簡潔便于快速閱讀和二次修改。目前該資源已有156人學(xué)習(xí)下載可配合博文說明理解MIMO系統(tǒng)模型與訓(xùn)練序列設(shè)計(jì)要點(diǎn)。通過實(shí)際運(yùn)行這些腳本能夠復(fù)現(xiàn)簡單MIMO場景下的完整信道估計(jì)流程對比兩版LS實(shí)現(xiàn)的結(jié)果差異掌握從序列生成、信道估計(jì)到誤碼判斷的基本實(shí)驗(yàn)方法也為后續(xù)擴(kuò)展LMMSE或最大似然估計(jì)提供了可迭代的起點(diǎn)。整體資源雖然輕量但算法鏈路完整適合作為通信課程實(shí)驗(yàn)或論文復(fù)現(xiàn)的參考代碼。1. 基于訓(xùn)練序列的MIMO信道估計(jì)導(dǎo)頻開銷與性能之間的第一次妥協(xié)做通信物理層的人幾乎都繞不開這道坎接收端拿到的是經(jīng)過多徑衰落后混疊在一起的多路信號不把信道沖激響應(yīng)估計(jì)出來后面的均衡、檢測、解調(diào)全是空中樓閣。MIMO系統(tǒng)里天線數(shù)一多待估的參數(shù)成倍增長信道估計(jì)的復(fù)雜度也跟著翻番?;谟?xùn)練序列的方案是實(shí)際系統(tǒng)里用得最廣的一類做法——發(fā)送端周期性插入接收端已知的導(dǎo)頻符號接收端拿接收信號和本地訓(xùn)練序列做一次最小二乘或最小均方誤差擬合把信道矩陣恢復(fù)出來。這篇筆記就沿著訓(xùn)練序列這個方向把LS、MMSE兩種估計(jì)器、訓(xùn)練序列設(shè)計(jì)里真正會影響性能的細(xì)節(jié)以及仿真復(fù)現(xiàn)時(shí)最容易翻車的幾個工程問題講透。適合正在做MIMO鏈路級仿真、剛接觸信道估計(jì)的通信方向?qū)W生也包括需要快速評估算法性能的無線算法工程師。2. 從信號模型到代價(jià)函數(shù)LS估計(jì)的推導(dǎo)、實(shí)現(xiàn)與兩個軟肋2.1 MIMO信道估計(jì)的信號模型先把矩陣維度寫清楚開始寫代碼之前我習(xí)慣先把信號模型寫在紙上因?yàn)楹竺嫠蟹抡鎱?shù)、復(fù)雜度分析、結(jié)論都建立在這一步的矩陣維度上??紤]一個發(fā)送天線數(shù) Nt、接收天線數(shù) Nr 的窄帶MIMO系統(tǒng)訓(xùn)練階段發(fā)送端發(fā)射一個長度為 L 的訓(xùn)練序列矩陣X維度是 Nt×L每個符號周期內(nèi) Nt 根天線同時(shí)發(fā)一個符號。接收端在 N r 根天線上同步接收得到接收矩陣Y維度是 Nr×L。信道矩陣H是 Nr×Nt 的復(fù)矩陣噪聲Z是 Nr×L 的加性高斯白噪聲。于是頻域或窄帶時(shí)域的接收模型可以寫成Y H·X Z這里不需要糾結(jié)是時(shí)域還是頻域窄帶模型下兩者數(shù)學(xué)形式一致只是X的構(gòu)造方式不同OFDM里是在指定子載波上插導(dǎo)頻這里先按窄帶模型講OFDM只是把同樣的問題在每個子載波上重復(fù)一遍。要估計(jì)的目標(biāo)是維度為 Nr×Nt 的H已知的是Y和發(fā)送的訓(xùn)練序列X。這個模型看著簡單但它包含了一個容易忽略的前提信道在訓(xùn)練序列持續(xù)的 L 個符號周期內(nèi)近似不變。L 一旦超過信道相干時(shí)間這個模型本身就失真了后面用再高級的估計(jì)器也救不回來。2.2 最小二乘估計(jì)的閉式解為什么它是最樸素也最不穩(wěn)的做法對上面的模型做最小二乘估計(jì)代價(jià)函數(shù)是接收信號與假設(shè)信道下重建信號之間的F范數(shù)平方J(H) ‖Y - H·X‖_F2對H求梯度并令其為零得到的閉式解是H_LS Y · X?其中X? X?·(X·X?)?1是訓(xùn)練序列矩陣的偽逆X? 表示共軛轉(zhuǎn)置。注意這里的偽逆是右偽逆因?yàn)閄是 Nt×L 的矩陣行數(shù)小于列數(shù)方程個數(shù)大于未知數(shù)個數(shù)這也是訓(xùn)練序列長度 L 必須不小于 Nt 的原因——不然偽逆都不存在LS問題本身欠定。最小二乘估計(jì)的實(shí)現(xiàn)邏輯非常直白它就是拿接收矩陣投影到訓(xùn)練序列張成的行空間上沒有利用任何信道統(tǒng)計(jì)信息也不需要對噪聲建模。只要X行滿秩LS估計(jì)總能給你一個結(jié)果。但這個「總能給出結(jié)果」恰恰是它最大的陷阱當(dāng)接收信噪比很低時(shí)噪聲項(xiàng) Z·X?會把估計(jì)結(jié)果污染得一塌糊涂因?yàn)閭文嬖谇竽孢^程中會把噪聲的某些分量放大。這條性質(zhì)決定了LS只適合高信噪比、或者僅僅把估計(jì)結(jié)果當(dāng)作后續(xù)迭代初值的場景。2.3 在MATLAB里實(shí)現(xiàn)LS估計(jì)的最小可運(yùn)行代碼下面這段代碼是最小可運(yùn)行的窄帶MIMO LS信道估計(jì)實(shí)現(xiàn)適合作為鏈路級仿真的起點(diǎn)。我刻意沒有用通信工具箱里封裝好的函數(shù)盡量讓每一步都能和上面的數(shù)學(xué)公式對上。% 參數(shù)配置天線數(shù)與訓(xùn)練長度 Nt 4; % 發(fā)送天線數(shù) Nr 4; % 接收天線數(shù) L 8; % 訓(xùn)練序列長度必須大于等于 Nt SNR_dB 20; % 接收信噪比單位 dB % 生成訓(xùn)練序列取隨機(jī)正交矩陣的前 Nt 行 % 用 QR 分解保證行正交性避免后面對 X 求偽逆時(shí)出現(xiàn)病態(tài) X_rand randn(Nt, L) 1j*randn(Nt, L); [Q, ~] qr(X_rand, 0); X Q; % 現(xiàn)在 X 是 Nt x L行正交X*X I % 隨機(jī)生成真實(shí)信道矩陣每個元素為標(biāo)準(zhǔn)復(fù)高斯 H_true (randn(Nr, Nt) 1j*randn(Nr, Nt)) / sqrt(2); % 接收端加噪聲 Y H_true * X; noise_power 10^(-SNR_dB/10); Z (randn(Nr, L) 1j*randn(Nr, L)) * sqrt(noise_power/2); Y Y Z; % LS 估計(jì)核心右偽逆求解 X_pinv X / (X * X); % 等價(jià)于 X * inv(X*X)但數(shù)值更穩(wěn) H_ls Y * X_pinv; % 評估誤差歸一化均方誤差NMSE err H_ls - H_true; nmse sum(abs(err(:)).^2) / sum(abs(H_true(:)).^2); fprintf(LS 估計(jì) NMSE: %.4f dB\n, 10*log10(nmse));這段代碼里最關(guān)鍵的一行是X_pinv X / (X * X)MATLAB里用右除運(yùn)算符/求解X_pinv * (X*X) X內(nèi)部走的是QR分解而不是顯式求逆數(shù)值穩(wěn)定性比直接調(diào)inv(X*X)要高不少。訓(xùn)練序列用QR分解來生成正交行向量組是因?yàn)長S估計(jì)的誤差下界和X·X?的最小特征值直接相關(guān)行正交時(shí)所有特征值都等于1這是最優(yōu)情況。注釋里的sqrt(noise_power/2)對應(yīng)復(fù)噪聲每個分量實(shí)部/虛部各占一半功率這是通信仿真里最容易錯的地方——很多人直接在復(fù)高斯噪聲上乘sqrt(noise_power)實(shí)際噪聲功率會翻倍。2.4 LS估計(jì)的兩個軟肋噪聲放大與未利用的先驗(yàn)信息LS估計(jì)的第一個軟肋在低信噪比下非常明顯。把估計(jì)誤差寫出來H_LS ? H_true Z·X?誤差項(xiàng)的協(xié)方差是和噪聲功率成比例而且當(dāng)訓(xùn)練序列非正交時(shí)這個誤差還會被進(jìn)一步放大。具體來說如果 X·X? 的最大特征值和最小特征值相差很大偽逆會把噪聲在某幾個方向上放大到不可接受的程度。這就是為什么所有教科書都強(qiáng)調(diào)訓(xùn)練序列要設(shè)計(jì)成正交的但實(shí)際工程里導(dǎo)頻位置受限、碰撞不可避免LS的性能就隨矩陣條件數(shù)一起惡化。第二個軟肋是LS完全沒有利用信道的統(tǒng)計(jì)特性。實(shí)際無線信道的元素之間不是獨(dú)立的天線間距近的時(shí)候、收發(fā)兩端存在相關(guān)性多徑信道在頻域上相鄰子載波之間的響應(yīng)也是平滑變化的。LS對每個子載波做獨(dú)立估計(jì)把這些相關(guān)性全部扔掉了。MMSE估計(jì)器正是奔著這兩個軟肋去的——利用信道的二階統(tǒng)計(jì)量來壓制噪聲同時(shí)把相關(guān)矩陣當(dāng)作正則化項(xiàng)避免小特征值方向上的噪聲放大。3. 用MMSE救場噪聲方差、相關(guān)矩陣與復(fù)雜度的三角平衡3.1 MMSE估計(jì)器是怎么推導(dǎo)出來的從正交性原理到閉式解MMSE估計(jì)的核心思路是找一個信道矩陣的線性變換W讓估計(jì)結(jié)果H_MMSE W·Y和真實(shí)信道H_true之間的均方誤差最小。這個優(yōu)化問題不需要求梯度用正交性原理即可解決最優(yōu)的估計(jì)誤差必須和觀測數(shù)據(jù)正交即E[(H_true ? W·Y)·Y?] 0。把接收模型代入這個正交條件經(jīng)過幾步矩陣代數(shù)運(yùn)算后得到W R_H · X? · (X·R_H·X? σ2·I)?1其中 R_H 是信道的相關(guān)矩陣維度是 Nt×Nt描述發(fā)送端天線之間的相關(guān)性σ2 是每個接收天線上的噪聲功率。注意這里假設(shè)了接收天線之間噪聲獨(dú)立、信道在接收端的相關(guān)性體現(xiàn)在行方向上由 Y 的多個行分別處理。整個估計(jì)器的行為可以直接分析當(dāng)信噪比極高、σ2趨近于零時(shí)MMSE退化成LS當(dāng)信噪比極低時(shí)估計(jì)結(jié)果被 R_H 主導(dǎo)趨近于信道的均值——如果你把相關(guān)矩陣設(shè)成單位陣那就是一個帶正則項(xiàng)的脊回歸相當(dāng)于在LS的偽逆里加了阻尼系數(shù)。3.2 相關(guān)矩陣 R_H 從哪來實(shí)測、模型還是純假設(shè)用MMSE繞不開一個工程問題相關(guān)矩陣 R_H 和噪聲功率 σ2 怎么拿到這和LS完全不同LS不需要任何先驗(yàn)所以實(shí)現(xiàn)簡單、魯棒MMSE估計(jì)器的性能上限更高但先驗(yàn)信息不準(zhǔn)的時(shí)候性能會急劇惡化。我一般會按三種場景來處理。第一種是仿真驗(yàn)證算法本身時(shí)直接用生成信道時(shí)的真實(shí)相關(guān)矩陣這樣得到的是MMSE的性能上界適合用來做對比基準(zhǔn)。第二種是工程實(shí)測場景用一組已知的訓(xùn)練序列先做LS估計(jì)用LS估計(jì)結(jié)果去計(jì)算樣本相關(guān)矩陣再把這個矩陣代回MMSE公式里——這叫估計(jì)的估計(jì)性能有損失但總比瞎猜強(qiáng)。第三種是干脆用理論模型比如指數(shù)相關(guān)模型發(fā)送端天線間隔越大、相關(guān)系數(shù)越低這樣至少矩陣是良態(tài)的。噪聲功率 σ2 的估計(jì)相對簡單在訓(xùn)練階段用LS估計(jì)完信道后把殘差Y ? H_LS·X的功率平均一下就能得到噪聲功率的粗估計(jì)。但要注意這個估計(jì)是偏小的——LS已經(jīng)把一部分噪聲能量吸進(jìn)了信道估計(jì)結(jié)果里殘差噪聲只是總噪聲的一部分。如果后面做的是LMMSE信道插值這個偏差會平滑掉一部分但如果直接用估計(jì)結(jié)果會顯得「過度自信」。3.3 MATLAB中MMSE的完整實(shí)現(xiàn)與三種復(fù)雜度降低手段有了上面的推導(dǎo)MMSE實(shí)現(xiàn)實(shí)際上只比LS多兩行矩陣運(yùn)算但這兩行會帶來顯著的復(fù)雜度提升。下面給出一個和前面LS代碼共享參數(shù)的實(shí)現(xiàn)方便直接對比兩者性能。% 在上一節(jié)的 LS 代碼基礎(chǔ)上繼續(xù)假設(shè)已經(jīng)得到 Y, X, noise_power % 信道相關(guān)矩陣指數(shù)相關(guān)模型相鄰天線相關(guān)系數(shù) rho rho 0.9; t (0:Nt-1); R_H rho .^ abs(t - t); % Nt x Nt 的Toeplitz矩陣 % MMSE 濾波矩陣核心公式 R_HX R_H * X; % Nt x L denom X * R_HX noise_power * eye(L); % L x L W_mmse R_HX / denom; % Nt x L % 對每根接收天線做 MMSE 估計(jì) % 接收矩陣 Y 是 Nr x L每行對應(yīng)一根接收天線乘以 W_mmse 得到估計(jì)信道 H_mmse Y * W_mmse; % Nr x Nt % 對比 NMSE err_mmse H_mmse - H_true; nmse_mmse sum(abs(err_mmse(:)).^2) / sum(abs(H_true(:)).^2); fprintf(MMSE 估計(jì) NMSE: %.4f dB\n, 10*log10(nmse_mmse)); fprintf(LS 估計(jì) NMSE: %.4f dB\n, 10*log10(nmse_ls));這個實(shí)現(xiàn)里denom的維度是 L×LL 等于訓(xùn)練序列長度。在典型的MIMO配置里 L 不會特別大一般取 8 到 16矩陣求逆的開銷是 O(L3)能接受。但一旦把同樣的方法平移到OFDM系統(tǒng)里每個子載波都做一次復(fù)雜度就變得不可忽視了。三個工程里最常用的降復(fù)雜度手段一是用對角近似代替相關(guān)矩陣只保留對角線這時(shí)MMSE退化成每個發(fā)送天線上獨(dú)立的標(biāo)量縮放在每個子載波上復(fù)雜度降了兩個數(shù)量級性能在信道相關(guān)性弱時(shí)幾乎無損二是把求逆結(jié)果存下來在信道統(tǒng)計(jì)特性變化很慢的室內(nèi)場景里相關(guān)矩陣和噪聲功率在一個傳輸塊內(nèi)可以復(fù)用不需要每個時(shí)隙重新算三是降秩處理對相關(guān)矩陣做特征分解后只保留前 K 個大特征值對應(yīng)的特征向量把求逆維度從 L 降到 K。3.4 LS與MMSE的參數(shù)對比什么時(shí)候該用誰對比維度LS估計(jì)MMSE估計(jì)先驗(yàn)信息需求完全不需要需要信道相關(guān)矩陣與噪聲功率低信噪比性能差噪聲被偽逆放大好相關(guān)矩陣起正則化作用訓(xùn)練序列要求行滿秩即可行滿秩且正交性越好性能越穩(wěn)計(jì)算復(fù)雜度O(L·Nt2) 量級極低含 L×L 矩陣求逆顯著偏高實(shí)現(xiàn)風(fēng)險(xiǎn)矩陣病態(tài)時(shí)估計(jì)值漂移先驗(yàn)不準(zhǔn)時(shí)性能不如LS典型場景高SNR、短突發(fā)、系統(tǒng)起步低SNR、慢變信道、有統(tǒng)計(jì)先驗(yàn)這個對比表是我在工程判斷時(shí)經(jīng)常用到的速查表。一個務(wù)實(shí)的做法是在系統(tǒng)設(shè)計(jì)初期先用LS把鏈路跑通后面需要壓靈敏度、提升低信噪比性能時(shí)再把核心鏈路上的估計(jì)器換成MMSE。LS相當(dāng)于零成本拿到了可用的基線MMSE是在這個基線上做精雕細(xì)琢。需要提醒的是MMSE在SNR很高時(shí)并不會比LS好多少增益主要出現(xiàn)在低SNR區(qū)域和信道相關(guān)性強(qiáng)的場景所以仿真時(shí)一定要把SNR軸拉開不要只測一兩個點(diǎn)就下結(jié)論。4. 訓(xùn)練序列設(shè)計(jì)正交性、長度與功率分配的三個必調(diào)參數(shù)4.1 正交性不是越高越好從條件數(shù)看訓(xùn)練序列的真實(shí)約束訓(xùn)練序列的性能指標(biāo)用矩陣的Gram矩陣X·X?來刻畫LS估計(jì)的誤差下界直接由(X·X?)?1的跡決定。當(dāng)X·X? I行正交時(shí)Gram矩陣達(dá)到最優(yōu)估計(jì)誤差最小。這也是幾乎所有論文里都用正交訓(xùn)練序列的原因——數(shù)學(xué)上最簡潔性能上最優(yōu)。但工程實(shí)現(xiàn)里有兩個約束會讓「完全正交」做不到。第一個是導(dǎo)頻污染的約束在多小區(qū)場景里相鄰小區(qū)復(fù)用相同的導(dǎo)頻序列你沒法保證自己小區(qū)內(nèi)的訓(xùn)練序列和其他小區(qū)的訓(xùn)練序列正交因?yàn)槟銐焊恢绖e人用的什么。第二個是和頻選信道的耦合OFDM系統(tǒng)里導(dǎo)頻放在不同子載波上每個子載波上的信道響應(yīng)不同正交性只在一個子載波內(nèi)成立跨子載波的導(dǎo)頻干擾依然存在。所以在實(shí)際做訓(xùn)練序列設(shè)計(jì)時(shí)我的判斷標(biāo)準(zhǔn)不是追求嚴(yán)格正交而是控制 Gram 矩陣條件數(shù)在 10 以下。條件數(shù)等于1是理想情況條件數(shù)小于10時(shí)性能損失可以忽略一旦超過100低SNR下LS估計(jì)基本就廢了。這個直覺比「必須正交」要實(shí)用得多因?yàn)閆adoff-Chu序列ZC序列在頻域上恒模、任意循環(huán)移位之間近似正交但長度和移位一限制條件數(shù)照樣會惡化。4.2 訓(xùn)練序列長度怎么定從待估參數(shù)個數(shù)到導(dǎo)頻開銷訓(xùn)練序列長度 L 的下界由待估參數(shù)個數(shù)決定窄帶MIMO里 H 有 Nr×Nt 個復(fù)參數(shù)但訓(xùn)練序列矩陣 X 只需要行數(shù)為 Nt所以 L ≥ Nt 就能保證可估計(jì)。實(shí)際設(shè)計(jì)時(shí)這個下界基本沒人會用因?yàn)長等于Nt時(shí)偽逆退化太嚴(yán)重誤差波動大常見的做法是取 L 2×Nt 或 L 4×Nt。但要警惕的是L翻倍意味著導(dǎo)頻開銷翻倍在數(shù)據(jù)幀里訓(xùn)練序列占用的資源就不能用來傳數(shù)據(jù)了。我一般會做一個簡單的權(quán)衡計(jì)算固定總幀長訓(xùn)練序列越長、信道估計(jì)越準(zhǔn)但有效數(shù)據(jù)傳輸時(shí)間變短、信噪比等效下降訓(xùn)練序列越短、數(shù)據(jù)傳輸時(shí)間變長但信道估計(jì)誤差會抬高接收端的等效噪聲底。最優(yōu)長度不是一個固定值它隨SNR、信道時(shí)變性、調(diào)制階數(shù)一起變。低階QPSK調(diào)制對信道估計(jì)誤差的容忍度比256QAM高一截所以高階調(diào)制系統(tǒng)里訓(xùn)練序列適當(dāng)加長是劃算的。4.3 訓(xùn)練符號功率分配峰值功率約束下的平方根分配訓(xùn)練序列的功率分配是一個容易被忽略但實(shí)際效果非常明顯的參數(shù)。如果所有訓(xùn)練符號等功率發(fā)射那么每根天線的平均發(fā)射功率是恒定的。但很多系統(tǒng)的功放工作在飽和區(qū)附近峰值功率受限訓(xùn)練序列如果出現(xiàn)大的峰均比PAPR信號會被非線性削波引入額外失真。一個簡單實(shí)用的做法是給訓(xùn)練序列的功率做一個平方根分配先統(tǒng)計(jì)ZC序列或隨機(jī)序列的幅度分布乘一個歸一化系數(shù)把所有符號的峰值功率壓到功放線性區(qū)的95%以內(nèi)然后再統(tǒng)一放大到平均功率目標(biāo)。這樣做的代價(jià)是訓(xùn)練符號的平均功率略低于理論值但換來的是整個訓(xùn)練塊能穩(wěn)定通過射頻鏈路不會在到達(dá)接收端時(shí)就已經(jīng)帶著削波失真。我在仿真里見過太多人把訓(xùn)練序列當(dāng)作理想符號完全不考慮PAPR一上硬件測試就翻車這個問題在后面的避坑章節(jié)會再展開。5. MIMO信道估計(jì)避坑導(dǎo)頻污染、矩陣奇異與仿真復(fù)現(xiàn)的四個典型翻車現(xiàn)場5.1 訓(xùn)練序列被噪聲道具化條件數(shù)惡化的典型路徑這個坑幾乎每個做信道估計(jì)仿真的人都踩過?,F(xiàn)象是LS估計(jì)的NMSE在某個SNR點(diǎn)之后突然不再下降或者估計(jì)出的信道矩陣?yán)镉袔赘炀€的值明顯異常。原因在于訓(xùn)練序列生成時(shí)只用了randn隨機(jī)數(shù)沒有做正交化處理。隨機(jī)矩陣在計(jì)算機(jī)里生成的浮點(diǎn)數(shù)雖然大概率行滿秩但Gram矩陣的最小特征值和最大特征值的比值可能接近機(jī)器精度對這個矩陣求偽逆時(shí)數(shù)值噪聲被放大到和真實(shí)信道信號一個量級。解決方法是訓(xùn)練序列生成后先做一次QR分解強(qiáng)制正交化并且在LS估計(jì)的偽逆求解時(shí)不要用pinv的默認(rèn)容差——MATLAB默認(rèn)容差是max(size(X)) * eps(norm(X))在一些邊緣情況下會把接近零的奇異值當(dāng)成非零導(dǎo)致估計(jì)結(jié)果里出現(xiàn)巨大的尖峰。推薦把容差設(shè)成1e-10量級但更好的做法是直接用右除運(yùn)算符/求解讓MATLAB內(nèi)部自己選數(shù)值穩(wěn)定的路徑。5.2 噪聲功率估計(jì)偏差MMSE比LS更容易先驗(yàn)失真MMSE對噪聲功率 σ2 的估計(jì)誤差非常敏感?,F(xiàn)象是當(dāng)噪聲功率被低估時(shí)MMSE估計(jì)結(jié)果在高SNR區(qū)域出現(xiàn)奇怪的過沖——濾波矩陣?yán)锏恼齽t項(xiàng)太小MMSE退化成LS之前壓住的噪聲全部冒出來當(dāng)噪聲功率被高估時(shí)估計(jì)結(jié)果在天線維度上呈現(xiàn)整體縮放幅度偏小處理BMSE雖不炸但信號幅度解調(diào)時(shí)星座點(diǎn)往原點(diǎn)收縮。原因前面分析過從LS殘差估算σ2得到的值系統(tǒng)性偏小。解決方法是加一個修正系數(shù)對LS殘差估計(jì)值乘一個 1.2 到 1.5 之間的修正因子或者在訓(xùn)練序列長度大于最小要求時(shí)直接用未發(fā)送訓(xùn)練序列的時(shí)隙來測噪聲底。這個修正系數(shù)沒有統(tǒng)一標(biāo)準(zhǔn)和訓(xùn)練序列長度、信道估計(jì)算法、信道時(shí)變性都有關(guān)我一般是在仿真里掃一遍 1.0 到 2.0 的范圍選NMSE最低的那個值固定下來。5.3 時(shí)變信道超出相干時(shí)間訓(xùn)練序列長度被「看不見的手」限制這個坑在慢變信道仿真里幾乎不出現(xiàn)但在高速移動場景里就會頻繁冒出來?,F(xiàn)象是訓(xùn)練序列長度一加大信道估計(jì)性能反而變差NMSE不降反升。原因是信道在一個訓(xùn)練塊內(nèi)已經(jīng)發(fā)生了明顯變化前面推導(dǎo)里Y H·X Z的前提被破壞了——不同符號周期里 H 已經(jīng)不一樣把整個塊的數(shù)據(jù)強(qiáng)行當(dāng)作同一個 H 來擬合等于讓估計(jì)器去擬合一個不存在的常值誤差自然上升。解決這個問題的方向有兩個一是縮短訓(xùn)練序列長度把 L 壓到待估參數(shù)剛需附近同時(shí)接受因此帶來的估計(jì)性能下限抬高二是改用分塊估計(jì)把 L 個符號切成若干個子塊每個子塊獨(dú)立做一次信道估計(jì)再對接收到數(shù)據(jù)做插值。后一種做法更常見但需要在訓(xùn)練序列設(shè)計(jì)階段就預(yù)留出子塊間的切換保護(hù)間隔否則相鄰子塊之間的相位跳變會毀掉整個估計(jì)結(jié)果。這是我做過的一個血淚經(jīng)驗(yàn)加塊間保護(hù)間隔會讓訓(xùn)練開銷再增加一截但換來的是高速場景下不翻車。5.4 多徑時(shí)延超過循環(huán)前綴OFDM信道估計(jì)里的頻域陷阱在OFDM系統(tǒng)里做基于導(dǎo)頻的信道估計(jì)時(shí)還有一個從時(shí)域帶過來的隱患。現(xiàn)象是某些子載波上的估計(jì)結(jié)果特別好另一些子載波上卻完全失真的「梳狀」圖案而且失真的子載波位置和導(dǎo)頻位置沒有直接對應(yīng)關(guān)系。原因不是估計(jì)器本身的問題而是多徑時(shí)延擴(kuò)展超過了OFDM循環(huán)前綴CP長度產(chǎn)生了符號間干擾和子載波間干擾。這時(shí)候每個子載波上的接收信號不再是H_k · X_k Z_k這個干凈的窄帶模型而是混入了來自相鄰符號和相鄰子載波的泄漏項(xiàng)。解決思路不是去修改估計(jì)器而是要先確認(rèn)CP長度設(shè)計(jì)合理。檢查方法是看LS估計(jì)的殘差Y ? H_LS·X的功率是否遠(yuǎn)高于所加噪聲功率——如果殘差里還有明顯的結(jié)構(gòu)比如幅度隨子載波周期性起伏基本就是這個原因。在仿真里應(yīng)對的手段是把信道時(shí)延擴(kuò)展限制在CP以內(nèi)或者縮短CP但同步收緊多徑建模參數(shù)。這個坑提醒我們信道估計(jì)算法再強(qiáng)也補(bǔ)不了系統(tǒng)級參數(shù)設(shè)計(jì)上的窟窿。6. 從LS/MMSE再往前一步稀疏信道估計(jì)與訓(xùn)練序列迭代優(yōu)化的實(shí)戰(zhàn)思路LS和MMSE是信道估計(jì)的基石但在實(shí)際項(xiàng)目里遇到超大規(guī)模MIMO或者明顯稀疏的多徑信道時(shí)這兩個方案在開銷和性能之間總顯得不夠極致。稀疏信道估計(jì)把問題換了個角度很多無線信道的多徑時(shí)延擴(kuò)展很大但非零抽頭只有寥寥幾個整個信道沖激響應(yīng)在時(shí)延域是稀疏的可以用壓縮感知的框架用遠(yuǎn)少于奈奎斯特采樣要求的導(dǎo)頻數(shù)恢復(fù)出信道。在窄帶MIMO模型里做稀疏估計(jì)第一步是把問題重構(gòu)成標(biāo)準(zhǔn)的壓縮感知形式。將信道矩陣按列向量化構(gòu)造一個由訓(xùn)練序列和基矩陣組合而成的感知矩陣然后跑OMP正交匹配追蹤算法。OMP的迭代次數(shù)就是信道的稀疏度實(shí)際多徑里通常只有3到7條顯著路徑因此迭代次數(shù)可以設(shè)得很小。和LS相比OMP在低SNR下的NMSE能低幾個dB但帶來的額外風(fēng)險(xiǎn)是感知矩陣的相干性——如果導(dǎo)頻設(shè)計(jì)沒做優(yōu)化OMP會選錯原子之后所有迭代都在錯誤的方向上累積。這里有一個值得一試的訓(xùn)練序列迭代優(yōu)化技巧把OMP恢復(fù)出的信道估計(jì)殘差反饋到訓(xùn)練序列設(shè)計(jì)里用殘差能量做加權(quán)把下一次訓(xùn)練序列的能量集中到殘差最大的方向上。這個過程可以收斂2到3輪每一輪的導(dǎo)頻開銷比隨機(jī)正交訓(xùn)練序列少20%左右是工程上能落地的稀疏估計(jì)改進(jìn)方向。我實(shí)際做過的驗(yàn)證方法是先固定一組隨機(jī)正交訓(xùn)練序列做baseline再跑兩輪迭代優(yōu)化記錄每一輪的NMSE和有效導(dǎo)頻開銷畫成曲線后就能直觀看到收斂趨勢。最后說一個自己踩過的驗(yàn)證教訓(xùn)換算法之前先確認(rèn)對比的基準(zhǔn)沒問題。我曾在一個項(xiàng)目里對比LS和OMP因?yàn)閎aseline的LS在低SNR下已經(jīng)因?yàn)橛?xùn)練序列條件數(shù)惡化而性能崩潰OMP的「提升」其實(shí)只是躲開了這個坑而不是真的稀疏恢復(fù)能力強(qiáng)。后來把訓(xùn)練序列強(qiáng)制正交化、重新測基線OMP的真實(shí)增益比之前測的小得多。做信道估計(jì)算法對比時(shí)先把baseline做到教科書理想狀態(tài)再談改進(jìn)——這是我反復(fù)提醒自己的一條規(guī)矩也希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取