文章目录

  • 前言
  • 一、 Kronecker相关信道模型
  • 二、生成方式1
    • 1.公式
    • 2.MATLAB代码
  • 三、生成方式2-complex correlation
    • 1.公式
    • 2.MATLAB代码
  • 四、生成方式三-power (field) correlation
    • 1.公式
    • 2.MATLAB代码
  • 总结

前言

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

5G NR空间相关信道仿真


一、 Kronecker相关信道模型

Hcorr=Rr1/2HiidRt1/2(1)\mathbf{H}_{\rm corr}=\mathbf{R}_r^{1/2}\mathbf{H}_{\rm iid}\mathbf{R}_t^{1/2} \tag1Hcorr​=Rr1/2​Hiid​Rt1/2​(1)
其中Rr\mathbf{R}_rRr​和Rt\mathbf{R}_tRt​分别表示接收和发送天线间的相关性,使用指数相关模型生成(以下均考虑此模型生成的实对称相关矩阵),其各元素ri,jr_{i,j}ri,j​由下式给出
ri,j={ρj−i,i≤jrj,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​={ρj−i,rj,i∗​,​i≤ji>j​,
其中,ρ\rhoρ是天线间相关系数。Rr1/2\mathbf{R}_r^{1/2}Rr1/2​和Rt1/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.公式

首先计算Rr\mathbf{R}_rRr​和Rt\mathbf{R}_tRt​的Kronecker积
R=Rt⊗Rr\mathbf{R}=\mathbf{R}_t \otimes \mathbf{R}_r R=Rt​⊗Rr​
对R\mathbf{R}R做平方根分解(C2=R\mathbf{C}^2=\mathbf{R}C2=R),即
C=R1/2=(Rt⊗Rr)1/2(2)\mathbf{C}=\mathbf{R}^{1/2}=(\mathbf{R}_t \otimes \mathbf{R}_r)^{1/2} \tag2 C=R1/2=(Rt​⊗Rr​)1/2(2)
最终生成的相关信道矩阵满足:
vec(Hcorr)=Cvec(Hiid)(3){\rm vec}(\mathbf{H}_{\rm corr}) = \mathbf{C}{\rm vec}(\mathbf{H}_{\rm iid})\tag3 vec(Hcorr​)=Cvec(Hiid​)(3)
利用⊗\otimes⊗和vec(⋅)\rm vec(\cdot)vec(⋅)运算符的性质
vec(AXB)=(BT⊗A)vec(X)(A⊗B)1/2=A1/2⊗B1/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)(A⊗B)1/2​=(BT⊗A)vec(X)=A1/2⊗B1/2(待确认)​
同时将(2)(2)(2)代入(3)(3)(3),可以得到
vec(Hcorr)=(Rt⊗Rr)1/2vec(Hiid)=vec(Rr1/2HiidRtT/2)=vec(Rr1/2HiidRt1/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​)​=(Rt​⊗Rr​)1/2vec(Hiid​)=vec(Rr1/2​Hiid​RtT/2​)=vec(Rr1/2​Hiid​Rt1/2​)​
其中利用了Rt\mathbf{R}_tRt​对称的性质。由此即导出了(1)(1)(1)的Kronecker模型。

注:也有文章中给出方案为,将以上操作中的平方根分解替换为cholesky分解,即有
CTC=Rvec(Hcorr)=CTvec(Hiid)\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记作chol(R){\rm chol}(\mathbf{R})chol(R),将(2)(2)(2)代入可以得到
CT=[chol(Rt)⊗chol(Rr)]T=chol(Rt)T⊗chol(Rr)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​)T⊗chol(Rr​)T​

CTvec(Hiid)=[chol(Rt)T⊗chol(Rr)T]vec(Hiid)=vec(chol(Rr)THiidchol(Rt))\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​)T⊗chol(Rr​)T]vec(Hiid​)=vec(chol(Rr​)THiid​chol(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=(Rt⊗Rr)1/2\mathbf{C}=(\sqrt{\mathbf{R}_t \otimes \mathbf{R}_r})^{1/2} C=(Rt​⊗Rr​​)1/2

2.MATLAB代码

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

总结

尚未解决的问题:

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

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

  1. initramfs两种方法恢复_微信会话记录删除了怎么恢复?最权威的方法在这

    随着手机软件的不断更新以及长时间使用,占用的手机内存也开始越来越大,我们只能通过清理手机内存来释放多余的空间了.如果我们在清理微信的时候删除了聊天记录,那后面有需要的时候该怎么找回呢?很多朋友都会上百 ...

  2. 环形文字拉直的两种方法:极坐标转换和薄板样条插值python代码示例

    目录 引言 极坐标转换 方案一: 方案二: 薄板样条插值法 引言 针对环形文字识别,通过这几天调研,一般有两种方法,一是极坐标转换:二是薄板样条插值(TPS)法. 极坐标转换 方案一: 代码来源:Se ...

  3. matlab 多重比较,谈一谈两种常用的多重比较校正方法(附Matlab程序)

    作者:kervin 微信号:kervin_zhao 在科学研究的统计分析中,我们往往会遇到多重比较校正问题.多重比较校正的方法很多,如Bonferroni.False Discovery Rate(F ...

  4. 二维坐标系空间变换(详细解读,附MATLAB代码)

    二维坐标系空间变换 参考链接: 代码资源: 假如存在任意两个二维坐标系,如下图所示: 目的:将xoy坐标系经过处理变换到XOY坐标系. 经过分析可知:对于二维平面上的变换需要 x y 方向上两个平移参 ...

  5. 基于空间相关的图像模板匹配及MATLAB实现

    应用背景:机器的模式识别所要解决的问题,就是用机器代替人去认识图像和找出一幅图像中人们感兴趣的目标物.如何找到目标物即图像的区域呢,这里介绍在空间域使用模板在图像中寻找与模板匹配的区域. 基本原理:在 ...

  6. ecshop flow.php?step=checkout,【原创文章】推荐两种调试ecshop php程序日志记录的方法...

    最近在调试ecshop的程序,发现一些好的调试方法.在php程序的调试中,对于变量值的获取非常重要,这样才能判断是哪里出了问题,如果变量明明赋值了,为什么是空值呢,就可以一步一步追查到原因.我比较喜欢 ...

  7. mysql proxy性能差_两种MySQL-Proxy架构的测试对比记录

    为观察读写分离效果,可以先停掉slave复制同步(slave stop),通过打开log参数,tail -f sql.log观察,单独进行读写测试,select查询语句基本上都是在slave中进行的, ...

  8. dac7714和dac3152两种DAC芯片FPGA控制流程记录

    记录时间2022910 前言 离开上个公司,将在公司使用过的几个接口和几个片子控制过程记录一下,以后可能用不到,也有可能会用得到,留下以后可以复用...... 一.dac3152 先说一下这个,这个芯 ...

  9. 基于RSS和TOA两种方法的无线传感器网络定位测量算法matlab仿真

    up目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 无线传感器网络(Wireless Sensor Networks, WSN)是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传 ...

最新文章

  1. Shiro源码学习之一
  2. 收藏 | 一文打尽AI、机器学习网络资源!
  3. REST API出错响应的设计(转)
  4. Mac-使用技巧之快捷键
  5. PIC单片机 IIC通信及实现
  6. html fond 怎么居中,BeautifulSoup标签定位方法总结
  7. 二维树状数组模板(区间修改+区间查询)
  8. 华软计算机网络技术,[计算机硬件及网络]计算机网络技术专业自评报告华软.doc...
  9. 揭开 Facebook Growth Hacking 的神秘面纱,微信、人人为何都在效仿?
  10. c# 低功耗蓝牙_C#建立从笔记本电脑内部蓝牙4.0到蓝牙低功耗(BLE)外设的流
  11. CGAL4.4+VC2008编译
  12. NachOS简述和源文件
  13. java中有个很强大的工具jconsole.exe
  14. 11年写的一篇文章----智能终端安全现状及前景展望
  15. 计算机维护费入什么会计科目,​系统维护费记入什么会计科目
  16. oracle 甩手 java ee_Eclipse正式代替Oracle接管Java EE
  17. MATLAB找勾股数,一种寻找勾股数的方法
  18. 我的游戏学习日志52——游戏与艺术(3)
  19. c语言 strchr 返回int,为什么strchr需要一个int来找到char?
  20. 最新WordPress收费模板QUX主题 DUX轻语博客加强版

热门文章

  1. php代码写一串新年祝福,临时保存新年祝福的php+dede
  2. python中rgb颜色_Python 转换RGB颜色值的示例代码
  3. python模拟比赛测试胜率
  4. React 面试题汇总(一)!!!
  5. 扫描仪CCC认证注意事项及标准依据
  6. sm4加密算法C/C++源码
  7. 网上舆情分析报告写作框架及六大技巧
  8. 根据地址获取坐标经纬度
  9. 【华为OD机试真题 JAVA】找城市
  10. 开源动物园一日游!技术圈的这些“飞禽走兽”你认识多少?