空间相关信道生成方式

最近在做一些MIMO空间相关信道的仿真,个人存在一些混淆,特此记录下来,欢迎大家学习并指正!

Kronecker相关信道模型

Hcorr=Rr1/2HiidRt1/2 \boldsymbol H_{corr} = \boldsymbol R_r^{1/2} \boldsymbol H_{iid} \boldsymbol R_t^{1/2} Hcorr=Rr1/2HiidRt1/2

  • Hiid\boldsymbol H_{iid}Hiid :独立同分布复高斯随机变量
  • Rr\boldsymbol R_rRr 和 Rt\boldsymbol R_tRt :接收和发送天线间的相关性
    • 指数相关模型,各元素 rijr_{ij}rij 由下式给出(ρ\rhoρ 是天线间相关系数)(本文采用指数相关模型)
      rij={ρj−i,i≤jrji∗,i>j r_{ij} = \begin{cases} \rho^{j-i}, & i \leq j \\ r_{ji}^*, & i>j \end{cases} rij={ρj−i,rji∗,i≤ji>j
    • 3GPP相关信道模型:https://itecspec.com/spec/3gpp-36-101-b-2-3-mimo-channel-correlation-matrices/
    • Rr1/2\boldsymbol R_r^{1/2}Rr1/2 和 Rt1/2\boldsymbol R_t^{1/2}Rt1/2 表示接收发送相关矩阵的平方根分解/cholesky分解。

方式1---直接生成

复制代码
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)));
H_iid = sqrt(0.5) * (randn(nr, nt) + 1j * randn(nr, nt));
H_corr = sqrtm(Rr) * H_iid * sqrtm(Rt);

方式2---complex correlation

该方式由于对 R1/2\boldsymbol R^{1/2}R1/2 的解释不同而产生两种方法,分别是基于平方根分解(sqrtm)和基于cholesky分解(chol)。

平方根分解

根据平方根分解,有
R=Rt⊗RrC2=RC=R1/2=(Rt⊗Rr)1/2\begin{align} & \boldsymbol R = \boldsymbol R_t \otimes \boldsymbol R_r \\ & \boldsymbol C^2 = \boldsymbol R \\ & \boldsymbol C = \boldsymbol R^{1/2} = (\boldsymbol R_t \otimes \boldsymbol R_r)^{1/2} \end{align}R=Rt⊗RrC2=RC=R1/2=(Rt⊗Rr)1/2

最终生成的相关信道矩阵满足
vec(Hcorr)=Cvec(Hiid)=(Rt⊗Rr)1/2vec(Hiid)=(Rt1/2⊗Rr1/2)vec(Hiid)=vec(Rr1/2HiidRtT/2)=vec(Rr1/2HiidRt1/2) (对称)\begin{align*} {\rm vec} (\boldsymbol H_{corr}) = & \boldsymbol C {\rm vec}(\boldsymbol H_{iid})\\ = & (\boldsymbol R_t \otimes \boldsymbol R_r)^{1/2} {\rm vec} (\boldsymbol H_{iid})\\ = & (\boldsymbol R_t^{1/2} \otimes \boldsymbol R_r^{1/2}) {\rm vec} (\boldsymbol H_{iid})\\ = & {\rm vec} (\boldsymbol R_r^{1/2} \boldsymbol H_{iid} \boldsymbol R_t^{T/2})\\ = & {\rm vec} (\boldsymbol R_r^{1/2} \boldsymbol H_{iid} \boldsymbol R_t^{1/2})~(对称)\\ \end{align*}vec(Hcorr)=====Cvec(Hiid)(Rt⊗Rr)1/2vec(Hiid)(Rt1/2⊗Rr1/2)vec(Hiid)vec(Rr1/2HiidRtT/2)vec(Rr1/2HiidRt1/2) (对称)

复制代码
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);
H_iid = sqrt(0.5) * (randn(nr, nt) + 1j * randn(nr, nt));
H_corr = reshape(C * H_iid(:),nr,nt);

cholesky分解

根据cholesky分解,有
R=Rt⊗RrCTC=RC=chol(R)\begin{align} & \boldsymbol R = \boldsymbol R_t \otimes \boldsymbol R_r \\ & \boldsymbol C^T C = \boldsymbol R \\ & \boldsymbol C = {\rm chol} (\boldsymbol R) \end{align}R=Rt⊗RrCTC=RC=chol(R)

最终生成的相关信道满足
vec(Hcorr)=CTvec(Hiid)=(chol(Rt⊗Rr))Tvec(Hiid)=(chol(Rt)⊗chol(Rr))Tvec(Hiid)=(chol(Rt)T⊗chol(Rr)T)vec(Hiid)=vec(chol(Rr)THiidchol(Rt))\begin{align*} {\rm vec} (\boldsymbol H_{corr}) = & \boldsymbol C^T {\rm vec} (\boldsymbol H_{iid})\\ = & ({\rm chol} (\boldsymbol R_t \otimes \boldsymbol R_r))^T {\rm vec} (\boldsymbol H_{iid})\\ = & ({\rm chol} (\boldsymbol R_t) \otimes {\rm chol} (\boldsymbol R_r))^T {\rm vec} (\boldsymbol H_{iid})\\ = & ({\rm chol} (\boldsymbol R_t)^T \otimes {\rm chol} (\boldsymbol R_r)^T) {\rm vec} (\boldsymbol H_{iid})\\ = & {\rm vec} ({\rm chol} (\boldsymbol R_r)^T \boldsymbol H_{iid} {\rm chol} (\boldsymbol R_t))\\ \end{align*}vec(Hcorr)=====CTvec(Hiid)(chol(Rt⊗Rr))Tvec(Hiid)(chol(Rt)⊗chol(Rr))Tvec(Hiid)(chol(Rt)T⊗chol(Rr)T)vec(Hiid)vec(chol(Rr)THiidchol(Rt))

复制代码
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 = chol(R).';
H_iid = sqrt(0.5) * (randn(nr, nt) + 1j * randn(nr, nt));
H_corr = reshape(C * H_iid(:), nr, nt);
% 对应的方式1为:
% H_corr = chol(Rr).' * H_iid * chol(Rt);

需要注意的是,使用两种分解方法最终得到的分解结果和相关信道矩阵不同。

方式3---power(field) correlation

从《MIMO-OFDM wireless communications with MATLAB》给出的代码来看,power(field) correlation相当于将相关矩阵的量纲视作功率,与方式2唯一不同的是
C=(Rt⊗Rr)1/2 \boldsymbol C = (\sqrt{\boldsymbol R_t \otimes \boldsymbol R_r})^{1/2} C=(Rt⊗Rr )1/2

复制代码
C = sqrtm(sqrt(kron(Rt, Rr))); % 其余与方式2代码相同

待解决的问题

  1. 何时使用平方根分解?何时使用cholesky分解?
  2. 不同的生成方式各自的适用范围/应用场景是什么?
相关推荐
鹏北海-RemHusband5 天前
JSBridge 原理详解
前端·信息与通信
-Try hard-5 天前
线程间通信 | 避免资源竞争、实现同步通信
linux·开发语言·信息与通信
hellojackjiang20115 天前
鸿蒙Next原生IM即时通讯RainbowTalk,纯ArkTS编写,基于开源MobileIMSDK框架
网络编程·信息与通信·harmonyos·即时通讯
写代码写到手抽筋5 天前
通信基站相关学习链接
学习·5g
以太浮标6 天前
华为eNSP综合实验之- 3a认证配置案例及解析(AAA认证)
运维·tcp/ip·网络安全·华为·信息与通信
生成论实验室6 天前
即事经智能:一种基于生成易算的通用智能新范式(书)
人工智能·神经网络·算法·架构·信息与通信
北京耐用通信6 天前
耐达讯自动化Profinet转Devicenet网关:破解汽车制造业电机控制协议壁垒的利器
人工智能·科技·物联网·网络协议·自动化·信息与通信
北京耐用通信6 天前
三步骤,零编程:耐达讯自动化工业网关实现Profinet转Devicenet快速集成
人工智能·科技·物联网·网络协议·自动化·信息与通信
网络小白不怕黑6 天前
Qos笔记
信息与通信
devmoon7 天前
从 0 到 1 实现两条独立区块链Parachain的跨链通信能力之实操指南
开发语言·rust·区块链·信息与通信·polkadot