MIMO信道的信道容量
//受工作时间所限,本文中的仿真结果均未在博客中做出整理,如对仿真结果感兴趣,本文附带了本文中所有结果的仿真程序,请自行修改参数后使用Matlab仿真查看
假设信道容量分析模型的信道的衰落类型是频率非选择性衰落,信道系数为0均值单位方差的复高斯随机变量。假设系统的发射端配有NT根天线,接收端配有NR根天线,总的发射功率为P。假设发射端未知信道的瞬时状态信息,因此只能将所有的功率平分给所有的天线,所以每根发射天线的功率为P/NT,且每根接收天线上的噪声功率为sigma^2,于是每根接受天线上的信噪比(SNR)为
这样就可以用NR*NT的复数矩阵表示信道矩阵,H的第ji个元素H(j,i)表示第i根发射天线到第j根接收天线的信道衰落系数。
下面具体分析单输入单输出(SISO)、单输入多输出(SIMO)、多输入单输出(MISO)和多输入多输出(MIMO)四种情况下的信道容量。
1. SISO信道的信道容量
采用单根天线发射和单根天线接收的通信系统称为SISO系统。对于加性高斯白噪声SISO信道,NT=NR=1,信道矩阵H=H(1,1)=1,假设接收端的信噪比为$\xi$(希腊字母),则根据香农公式,该信道的归一化容量可以表示为:
该容量的取值不受编码或者信号设计复杂性的限制,即只要信噪比每增加3dB(2倍),信道容量增加1bps/Hz。
实际的无线信道是时变的,会受到衰落的影响,如果用H表示信道系数的瞬时值,则信道容量可以表示为
上式的结果是一个随机变量,可以计算其概率分布,瑞利平衰落的信道容量的累计概率分布的仿真结果如图XX所示。从图中可以看出,由于受到衰落的影响,其与加性高斯白噪声信道的信道容量有比较大的差距。
从信道容量的累计概率分布图中可以提取出两个与基带系统设计相关的统计参数,一个是平均信道容量Cav,即C的所有样本的平均值,它表示该无线链路能够提供的平均数据传输速率;另一个参数是终端容量(Outage Capacity)Cout,它定义了确保传输的高可靠性的数据传输速率,即prob{C>Cout}。
2. MISO信道的信道容量
对于多输入但出书信道,发射端配有NT根天线,接收端只有一根天线,即NR=1,信道矩阵H也随之变成一个矢量H=[H(1,1), H(1,2), … , H(1,NT)],其中H(1,i)表示从发射端的第i根天线到达接收端的信道的信道系数。
如果信道系数固定,则该信道的信道容量可以表示为:
其中。
由于假定信道的系数固定,则受到功率归一化的影响,该信道容量不会随着发射天线数目的增长而增长。
如果信道系数随机变化,则该信道容量的表达式同上,但是变成一个随H变化的随机变量,norm(H, ‘fro’)^2服从自由度为2NT的$\chi^{2}$(希腊字母)分布。
图XX给出了信道容量随发射天线数变化的累计概率分布函数,仿真假定信道系数是复高斯随机变量,发射天线数分别取1,2,4,8,16,信噪比取为10dB和100dB,从图中可以看出,信道容量会随着发射天线数的增加而增加,增长的极限是加性高斯白噪声信道的信道容量,这就从信道容量的角度解释了分集能够带来的系统可靠性的提升。
3. SIMO信道的信道容量
对于单输入多输出信道,发射端只有一根天线,接收端配有NR,其信道可以看成是一个NR维列矢量:H=[H(1,1), H(2,1), … , H(NT,1)],其中H(j,1)是发射端的天线到接收端的第j根天线的信道系数。
如果信道系数是固定的,则该信道的信道容量可以表示为:
其中。
由于信道系数被归一化,从信道容量的计算公式可以看出,SIMO信道与SISO信道相比获得了大小为NR的阵列增益。
类似地,信道系数是复高斯随机变量情况下的信道容量公式同上,C成为一个随机变量。
图XX给出了信道容量随接收天线数变化的累计概率分布函数,仿真假定信道系数是复高斯随机变量,发射天线数分别取1,2,4,8,16,信噪比取为10dB和100dB。
4. MIMO信道的信道容量
对于配备有NT根发射天线和NR根接收天线的MIMO信道,发射端在不知道传输信道的状态信息的条件下,其信道容量的公式可以表示为:
5. SISO、MISO、SIMO和MIMO信道的信道容量比较
通过上述比较可以看出,MIMO方式能够通过多种手段改善平均信道容量和中断概率,其改善平均信道容量主要是通过阵列增益和复用增益实现的,改善中断概率主要是利用了分集增益,这与前文中提到的MIMO系统的三种主要增益是吻合的。
图XX给出了四种信道情况下的比较累计概率分布曲线,可以从中看出分集增益、阵列增益和复用增益对信道容量的改善作用。
6. 天线相关对信道容量的影响
MIMO信道的信道容量在很大程度上取决于天线之间的相关性和MIMO信道矩阵的满秩情况。如前所述,对于收发端都具有相关性的MIMO信道,其信道矩阵可以表示为:
为了分析和比较天线的相关性对信道容量的具体影响,这里以2*2的信道为例进行仿真,相关系数分别取为0,0.2,0.5,0.9,结果如图XX所示。从图中可以看出,天线的相关系数越大,对信道容量的影响越大,而且信噪比越大,造成的损失越大。
7. 莱斯因子对信道容量的影响
在同时存在直射路径和散射分量的传播环境中,MIMO系统一般采用莱斯信道模型来近似,其中莱斯银子K的选择决定了该模型中直射分量的大小。实际情况中,MIMO莱斯信道矩阵可以表示为:
式中HLOS表示无散射,仅有直射路径的信道矩阵;HRay表示仅有散射、没有直射路径的信道矩阵。D^2和2sigma^2分别为直射分量和散射分量的功率,两者之比就是莱斯因子K。
为了分析和比较莱斯因子对MIMO信道容量的具体影响,本文以2*2的MIMO信道为例进行计算机仿真,选择HRay为独立同分布的瑞利平衰落,HLOS=[1, 1; 1, 1],而莱斯因子分别取0、1、10和100四种情况,得到的仿真结果如图XX所示,从图中可以看出当莱斯因子较小,如K=1时,对信道偶然那个亮的影响不大,而当K因子较大,如K=100时,对信道容量的影响较大,而且随着信噪比的增大,损害的程度不断加大。
从这里我们可以看出,直达径对MIMO系统的信道容量起到了破坏作用,这与前文中指出的MIMO系统适合工作在富散射环境中的结论是吻合的。
8. 自适应功率分配的信道容量
如果发射端获得了信道的状态信息,那么它可以利用信道状态信息对发射信息进行预处理,以获得最大的信道容量。
对信道矩阵H执行SVD分解,得到
在发射端预乘右矩阵V,在接收端乘上左矩阵U^H,则MIMO信道等效为对角矩阵Sigma,也就是说多条相互独立的链路可以分别传输数据。在这样的条件下,信道容量的公式可以改写为:
其中。
在总功率受限的情况下找到C的最大值在数学上是一个拉格朗日乘数问题,在信息论上可以用最佳能量分配的注水算法[Thomas Cover, 1991]解决,其原理可以用图XX来描述.
注水的原理是,由1/λ和子信道的状态来决定在各子信道中如何分配功率。(图里面P*就表示对那个子信道分配的功率多少,也就是1/λ和阶梯层的差值)。信道状态越好,分配的功率越多,越差就越少,当状态差的程度超过阈值1/λ就不在该子信道上分配功率了。
注水算法的求解是一个迭代的过程,其复杂度相对较高,可以考虑寻找注水原理的目标函数的多项式逼近函数。
附:MIMO信道容量的Matlab仿真程序
%% Simulation of Capacity of MIMO channel
% Author: alpswy
% Email: [email protected]
% Revise History:
% 2009-08-22 Created
%% Parameters for normal simulation
ChanType = 'Rayleigh'; % AWGN, Rayleigh,CorrRayleigh, Rice
LOOP = 10000; % number of channel tapsamples
const = 1/sqrt(2); % constant number
NT = 4; % number of receive antennas
NR = 4; % number of transmit antennas
SNRdB = 10; % SNR in dB
SNRdec = 10^(0.1*SNRdB); % SNR in decibel
%% Parameters for displaying
numGroup = 100; % variable used to countsamples
Range_MIN = 0; % minimum value of figure
Range_MAX = 6; % maximum value of figure
%% Parameters for simulation of correlationof channel
rho_t = 0;
rho_r = 0;
%% Parameters for simulation of Ricechannel
K = 1; % Rice factor
D = sqrt(K);
switch ChanType
case 'AWGN'
H = ones(NR, NT);
C = log2(det(eye(NR) + SNRdec/NT*H*H'));
C_1 = [C, C];
plot(C_1, 0:1);
axis([Range_MIN, Range_MAX, 0, 1]);
case 'Rayleigh'
C = zeros(1, LOOP);
C_2 = zeros(1, numGroup);
for idx_LOOP = 1:LOOP
H = const*(randn(NR, NT) + 1j*randn(NR, NT));
C(idx_LOOP) = log2(det(eye(NR) + SNRdec/NT*H*H'));
end
C_min = min(C);
C_max = max(C);
C_1 = hist(C, numGroup);
C_2(1) = C_1(1);
for idx = 2:numGroup
C_2(idx) = C_2(idx-1) + C_1(idx);
end
C_2 = C_2 / LOOP;
Range_MIN = C_min;
Range_MAX = C_max;
X_axe = Range_MIN + [0:(numGroup-1)]/numGroup*(Range_MAX-Range_MIN);
plot(X_axe, C_2);
case 'CorrRayleigh'
C = zeros(1, LOOP);
C_2 = zeros(1, numGroup);
R_tx = [1, rho_t; rho_t, 1];% for 2*2 only
R_rx = [1, rho_r; rho_r, 1];
for idx_LOOP = 1:LOOP
H = const*(randn(NR, NT) + 1j*randn(NR, NT));
H_Corr = R_rx * H * R_tx;
C(idx_LOOP) = log2(det(eye(NR) + SNRdec/NT*H_Corr*H_Corr'));
end
C_min = min(C);
C_max = max(C);
C_1 = hist(C, numGroup);
C_2(1) = C_1(1);
for idx = 2:numGroup
C_2(idx) = C_2(idx-1) + C_1(idx);
end
C_2 = C_2 / LOOP;
Range_MIN = C_min;
Range_MAX = C_max;
X_axe = Range_MIN + [0:(numGroup-1)]/numGroup*(Range_MAX-Range_MIN);
plot(X_axe, C_2);
case 'Rice'
C = zeros(1, LOOP);
C_2 = zeros(1, numGroup);
for idx_LOOP = 1:LOOP
H = const*(randn(NR, NT) + 1j*randn(NR, NT)) + D * ones(NR, NT);
C(idx_LOOP) = log2(det(eye(NR) + SNRdec/NT*H*H'));
end
C_min = min(C);
C_max = max(C);
C_1 = hist(C, numGroup);
C_2(1) = C_1(1);
for idx = 2:numGroup
C_2(idx) = C_2(idx-1) + C_1(idx);
end
C_2 = C_2 / LOOP;
Range_MIN = C_min;
Range_MAX = C_max;
X_axe = Range_MIN + [0:(numGroup-1)]/numGroup*(Range_MAX-Range_MIN);
plot(X_axe, C_2);
otherwise
disp('Other Channel Type is still under construction. Only AWGN andRayleigh fading is available.')
keyboard
end