MIMO-OFDM系統(tǒng)的接收信號是多個發(fā)射天線發(fā)送信號的衰落與加性噪聲的線性疊加,若采用通常SISO-OFDM系統(tǒng)或MIMO系統(tǒng)的估計算法估計信道,將會帶來很大的估計誤差。出于設計實現(xiàn)的考慮,本文主要研究理論相對比較成熟的慢變環(huán)境下基于訓練序列的MIMO-OFDM系統(tǒng)的信道估計算法。本章將主要討論MIMO-OFDM系統(tǒng)特殊訓練序列的設計和信道估計算法的選擇。
多天線系統(tǒng)的信道估計算法同單天線系統(tǒng)的相比具有更大的復雜性,因為接收信號是多個發(fā)射信號的疊加信號,這些發(fā)射信號同時從多個發(fā)射天線上發(fā)射出來,幾乎同步到達任一接收天線。因此要從一個疊加信號中正確的識別出多個發(fā)射信號,需要信道估計算法能估計出各發(fā)射天線到同一接收天線之間多個并行信道的信道特性。而任一發(fā)射天線到任一接收天線之間的信道估計可參考單天線系統(tǒng)的算法。
信道估計算法主要可以分為兩種:盲估計算法和非盲估計算法。盲信道估計算法不需要在發(fā)送信息中插入訓練序列,節(jié)約了帶寬。盲估計算法的實現(xiàn)需要利用發(fā)送信息內(nèi)包含的統(tǒng)計信息。這通常需要在接收端對接收信號進行復雜的數(shù)學運算,算法的運算量一般都很大,不適合應用于對時延要求比較高的實時系統(tǒng)。非盲估計算法是在發(fā)送信號中插入收發(fā)兩端都事先己知的信息,接收端在接收到該已知信息之后,由該信息的幅度、載頻或相位變化來估計信道對發(fā)送信息所造成的衰落影響。算法應用廣泛,幾乎可以應用于所有的無線通信系統(tǒng)。
輸入信號經(jīng)復用器分解成n個長度相同的數(shù)據(jù)流,然后進行獨立地編碼和調(diào)制,因此它不是基于發(fā)射分集的。這些編碼器可以是二進制的卷積編碼器,也可以是不經(jīng)過任何編碼直接輸出。下面就來重點介紹一下這個系統(tǒng)的MATLAB的實現(xiàn)方法。
for k=1:N
Tc=c(k)*cos(2*pi*fd(k)*t+theta(k))+Tc;
Ts=c(k)*sin(2*pi*fd(k)*t+theta(k))+Ts;
end
r=ones(mt*mr,1)*(Tc.^2+Ts.^2).^0.5;
這段代碼主要用來產(chǎn)生所需要的信號,分別有SIN,COS兩個分量。
for tx=1:mt
data_b=0*round(rand(4,nse));
data_qam(tx,:)=j*(2*(mod(data_b(1,:)+data_b(2,:),2)
+2*data_b(1,:))-3)+2*(mod(data_b(3,:)+data_b(4,:),2)+2*data_b(3,:))-3;
for loop=1:mt
data_qam(tx,pilot+loop-1)=(1+j)*(loop==tx);
end
data_time_temp=ifft(data_qam(tx,:));
data_time(tx,:)=[data_time_temp(end-ng+1:end) data_time_temp];
end
這段代碼主要用來模擬MIMO-OFDM系統(tǒng)的發(fā)送部分,首先模擬實際情況生成一個隨機信號,然后將隨機信號通過QAM調(diào)制再經(jīng)過IFFT變化得到我們所要的信號。這個過程就是上述系統(tǒng)結果的描述。
for rx=1:mr
for tx=1:mt
output_temp=conv(data_time(tx,:),h((rx-1)*mt+tx,:));
output(rx,:)=output_temp(ng+1:ng+nse)+output(rx,:);
end
np=(sum(abs(output(rx,:)).^2)/length(output(rx,:)))*sigma2;
noise=(randn(size(output(rx,:)))+i*randn(size(output(rx,:))))*sqrt(np);
output(rx,:)=output(rx,:)+noise;
data_out(rx,:)=fft(output(rx,:));
end
這段代碼主要用來模擬MIMO-OFDM系統(tǒng)的接收部分。由于系統(tǒng)工作的時候,肯定會有噪聲的影響,所以只有通過模擬一個系統(tǒng)的噪聲才能正確的模擬系統(tǒng)的工作性。這里,我們通過產(chǎn)生一個隨機數(shù)和原始的信號進行疊加來模擬我們所接收到的信號。
以上,我們模擬MIMO-OFDM系統(tǒng)的發(fā)送和接收模塊,下面就來建立一個系統(tǒng)的信道估計模塊:具體代碼如下所示:
for tx=1:mt
for rx=1:mr
H_est_temp=data_out(rx,pilot+tx-1)./data_qam(tx,pilot+tx-1);
h_time=ifft(H_est_temp);
h_time=[h_time zeros(1,nse-length(h_time))];
H_est1((rx-1)*mt+tx,:)=fft(h_time);
if (tx>1)
H_est1((rx-1)*mt+tx,:)=[H_est1((rx-1)*mt+tx,nse-tx+2:nse) H_est1((rx-1)*mt+tx,1:nse-tx+1)];
End
H_act((rx-1)*mt+tx,:)=fft([h((rx-1)*mt+tx,:) zeros(1,nse-CL)]);
error1=(abs(H_act((rx-1)*mt+tx,:)-H_est1((rx-1)*mt+tx,:)).^2);
estimation_error1((rx-1)*mt+tx,:)=estimation_error1((rx-1)*mt+tx,:)+error1;
end
end
通過這個方法,我們就可以做系統(tǒng)的信道估計了,此外還能計算系統(tǒng)的平均誤差檢測,從而驗證系統(tǒng)的正確性。
審核編輯:黃飛
-
ofdm
+關注
關注
6文章
349瀏覽量
57001 -
MIMO
+關注
關注
12文章
594瀏覽量
76824 -
復用器
+關注
關注
1文章
707瀏覽量
28308 -
天線系統(tǒng)
+關注
關注
1文章
50瀏覽量
12243 -
卷積編碼器
+關注
關注
0文章
6瀏覽量
2434
發(fā)布評論請先 登錄
相關推薦
評論