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