【MIMO】两种空间相关信道生成方式的记录(公式+MATLAB代码)

本文解析了MIMO空间相关信道生成中的complex correlation和power(field)correlation两种方式,通过公式推导和MATLAB代码实例,探讨了它们在Kronecker模型下的区别,并提出待解决的问题,适合5GNR通道仿真研究者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

关于MIMO空间相关信道的生成,《MIMO-OFDM wireless communications with MATLAB》中给出了“complex correlation”和“power (field) correlation”两种方式(P89),之前就没有理解两者的区别。
今天在进行5G NR空间相关信道仿真时又遇到了这一问题,这里进行记录和讨论。

5G NR空间相关信道仿真


一、 Kronecker相关信道模型

H c o r r = R r 1 / 2 H i i d R t 1 / 2 (1) \mathbf{H}_{\rm corr}=\mathbf{R}_r^{1/2}\mathbf{H}_{\rm iid}\mathbf{R}_t^{1/2} \tag1 Hcorr=Rr1/2HiidRt1/2(1)
其中 R r \mathbf{R}_r Rr R t \mathbf{R}_t Rt分别表示接收和发送天线间的相关性,使用指数相关模型生成(以下均考虑此模型生成的实对称相关矩阵),其各元素 r i , j r_{i,j} ri,j由下式给出
r i , j = { ρ j − i , i ≤ j r j , i ∗ , i > j , r_{i,j}=\left\{ \begin{array}{ll} \rho^{j-i},& i\leq j\\ r_{j,i}^{\ast},&i>j \end{array}\right., ri,j={ρji,rj,i,iji>j,
其中, ρ \rho ρ是天线间相关系数。 R r 1 / 2 \mathbf{R}_r^{1/2} Rr1/2 R t 1 / 2 \mathbf{R}_t^{1/2} Rt1/2表示矩阵收发相关矩阵的平方根分解。

二、生成方式1

1.公式

直接按Kronecker相关信道模型的公式实现

2.MATLAB代码

nr = 2; nt = 2; 
rho_r = 0.3; rho_t = 0.3;
rr = toeplitz((rho_r*ones(1,nr)).^(0:(nr-1)));
rt = toeplitz((rho_t*ones(1,nt)).^(0:(nt-1)));
hiid = randn(nr, nt);
hcorr = sqrtm(rr)*hiid*sqrtm(rt);

三、生成方式2-complex correlation

1.公式

首先计算 R r \mathbf{R}_r Rr R t \mathbf{R}_t Rt的Kronecker积
R = R t ⊗ R r \mathbf{R}=\mathbf{R}_t \otimes \mathbf{R}_r R=RtRr
R \mathbf{R} R做平方根分解( C 2 = R \mathbf{C}^2=\mathbf{R} C2=R),即
C = R 1 / 2 = ( R t ⊗ R r ) 1 / 2 (2) \mathbf{C}=\mathbf{R}^{1/2}=(\mathbf{R}_t \otimes \mathbf{R}_r)^{1/2} \tag2 C=R1/2=(RtRr)1/2(2)
最终生成的相关信道矩阵满足:
v e c ( H c o r r ) = C v e c ( H i i d ) (3) {\rm vec}(\mathbf{H}_{\rm corr}) = \mathbf{C}{\rm vec}(\mathbf{H}_{\rm iid})\tag3 vec(Hcorr)=Cvec(Hiid)(3)
利用 ⊗ \otimes v e c ( ⋅ ) \rm vec(\cdot) vec()运算符的性质
v e c ( A X B ) = ( B T ⊗ A ) v e c ( X ) ( A ⊗ B ) 1 / 2 = A 1 / 2 ⊗ B 1 / 2 ( 待 确 认 ) \begin{aligned} {\rm vec}(\mathbf{AXB})&=(\mathbf{B}^{T}\otimes\mathbf{A}){\rm vec}(\mathbf{X})\\ (\mathbf{A}\otimes\mathbf{B})^{1/2}&=\mathbf{A}^{1/2}\otimes\mathbf{B}^{1/2}(待确认) \end{aligned} vec(AXB)(AB)1/2=(BTA)vec(X)=A1/2B1/2()
同时将 ( 2 ) (2) (2)代入 ( 3 ) (3) (3),可以得到
v e c ( H c o r r ) = ( R t ⊗ R r ) 1 / 2 v e c ( H i i d ) = v e c ( R r 1 / 2 H i i d R t T / 2 ) = v e c ( R r 1 / 2 H i i d R t 1 / 2 ) \begin{aligned} {\rm vec}(\mathbf{H}_{\rm corr}) &= (\mathbf{R}_t \otimes \mathbf{R}_r)^{1/2} {\rm vec}(\mathbf{H}_{\rm iid})\\ &={\rm vec}(\mathbf{R}_r^{1/2}\mathbf{H}_{\rm iid}\mathbf{R}_t^{T/2})\\ &={\rm vec}(\mathbf{R}_r^{1/2}\mathbf{H}_{\rm iid}\mathbf{R}_t^{1/2}) \end{aligned} vec(Hcorr)=(RtRr)1/2vec(Hiid)=vec(Rr1/2HiidRtT/2)=vec(Rr1/2HiidRt1/2)
其中利用了 R t \mathbf{R}_t Rt对称的性质。由此即导出了 ( 1 ) (1) (1)的Kronecker模型。

注:也有文章中给出方案为,将以上操作中的平方根分解替换为cholesky分解,即有
C T C = R v e c ( H c o r r ) = C T v e c ( H i i d ) \begin{aligned} \mathbf{C}^{T}\mathbf{C}&=\mathbf{R}\\ {\rm vec}(\mathbf{H}_{\rm corr}) &= \mathbf{C}^{T}{\rm vec}(\mathbf{H}_{\rm iid}) \end{aligned} CTCvec(Hcorr)=R=CTvec(Hiid)
其中 C \mathbf{C} C是主对角元恒正的上三角矩阵。将 C \mathbf{C} C记作 c h o l ( R ) {\rm chol}(\mathbf{R}) chol(R),将 ( 2 ) (2) (2)代入可以得到
C T = [ c h o l ( R t ) ⊗ c h o l ( R r ) ] T = c h o l ( R t ) T ⊗ c h o l ( R r ) T \begin{aligned} \mathbf{C}^{T}&=[{\rm chol}(\mathbf{R}_t)\otimes{\rm chol}(\mathbf{R}_r)]^{T}\\ &={\rm chol}(\mathbf{R}_t)^{T}\otimes{\rm chol}(\mathbf{R}_r)^{T} \end{aligned} CT=[chol(Rt)chol(Rr)]T=chol(Rt)Tchol(Rr)T

C T v e c ( H i i d ) = [ c h o l ( R t ) T ⊗ c h o l ( R r ) T ] v e c ( H i i d ) = v e c ( c h o l ( R r ) T H i i d c h o l ( R t ) ) \begin{aligned} \mathbf{C}^{T}{\rm vec}(\mathbf{H}_{\rm iid}) &=[{\rm chol}(\mathbf{R}_t)^{T}\otimes{\rm chol}(\mathbf{R}_r)^{T}]{\rm vec}(\mathbf{H}_{\rm iid})\\ &={\rm vec}({\rm chol}(\mathbf{R}_r)^{T}\mathbf{H}_{\rm iid}{\rm chol}(\mathbf{R}_t)) \end{aligned} CTvec(Hiid)=[chol(Rt)Tchol(Rr)T]vec(Hiid)=vec(chol(Rr)THiidchol(Rt))
由此同样可以导出式 ( 1 ) (1) (1),只不过也是将平方根分解替换为cholesky分解。
需要注意的是,使用两种方式最终得到的分解结果和相关信道矩阵不同。

2.MATLAB代码

nr = 2; nt = 2; 
rho_r = 0.3; rho_t = 0.3;
rr = toeplitz((rho_r*ones(1,nr)).^(0:(nr-1)));
rt = toeplitz((rho_t*ones(1,nt)).^(0:(nt-1)));
r = kron(rt, rr);
%% 平方根分解
c = sqrtm(r);
hcorr = reshape(c*hiid(:),nr,nt);
%% cholesky分解
c = chol(r)';
hcorr = reshape(c*hiid(:),nr,nt);
% 对应的生成方式1为:
% hcorr = chol(rr).'*hiid*chol(rt);

四、生成方式三-power (field) correlation

1.公式

从《MIMO-OFDM wireless communications with MATLAB》给出的代码来看,power (field) correlation相当于将相关矩阵的量纲视作功率,与生成方式2唯一的不同是式 ( 2 ) (2) (2)变为
C = ( R t ⊗ R r ) 1 / 2 \mathbf{C}=(\sqrt{\mathbf{R}_t \otimes \mathbf{R}_r})^{1/2} C=(RtRr )1/2

2.MATLAB代码

c = sqrtm(sqrt(kron(rt, rr))); % 其余与生成方式2代码相同

总结

尚未解决的问题:

  1. 何时使用平方根分解,何时使用cholesky分解
  2. 以上公式推导中待确认的部分
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值