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

这篇具有很好参考价值的文章主要介绍了【MIMO】两种空间相关信道生成方式的记录(公式+MATLAB代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

关于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代码相同

总结

尚未解决的问题:文章来源地址https://www.toymoban.com/news/detail-404365.html

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

到了这里,关于【MIMO】两种空间相关信道生成方式的记录(公式+MATLAB代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3D-MIMO信道模型的理论概述和matlab仿真

    目录 一、理论基础 二、核心程序 三、测试结果        信道模型的建模,其在不同场景中所对应的参数和分别都是不同的,因此,通过修改信道模型在角度域和延迟域[40]的特定的参数和分布,就可以获得不同的信道模型。        3D-MIMO(Three-Dimensional Multiple-Input Multiple-O

    2024年02月07日
    浏览(39)
  • 生成模型相关算法:EM算法步骤和公式推导

    EM 算法是一种选代算法,1977 年 Dempster 等人总结提出,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计EM算法的每次选代由两步组成:E步,求期望 (expectation);M步,求极大(maximization)所以这一算法称为期望极大算法(expectation maximizationalgorithm),

    2024年02月14日
    浏览(38)
  • 【MATLAB源码-第38期】基于OFDM的块状导频和梳状导频误码率性能对比,以及LS/LMMSE两种信道估计方法以及不同调制方式对比。

    块状导频和梳状导频都是用于无线通信系统中信道估计的方法。 块状导频: 定义: 在频域上,块状导频是连续放置的一组导频符号。这意味着所有的导频符号都集中在一个短的时间段内发送。 优点: 对于时间选择性信道,块状导频可以提供准确的信道估计。 由于导频符号

    2024年04月09日
    浏览(48)
  • UE4两种点击空间UI弹窗的方式

    1、要实现点击,必须要给鼠标左键或者右键写发射射线的程序,如下   2、在关卡蓝图中,最好设置一下鼠标可见。  2、UI加一个按钮,并设计On Clicked事件 对应的响应如下,这是第一种 3、第二种如下    

    2024年02月14日
    浏览(96)
  • JAVA生成唯一订单编号方案(两种方式)

    参考博客: ​​​​​​fhttp://t.csdn.cn/lCQ47​​​​​​​

    2024年02月07日
    浏览(39)
  • 记录一下verilog重复例化的两种方式

    0 前言 这段时间例化了挺多mem,过程中也了解到了一些新的东西,在这里记录一下 1 for循环方式例化方法 先给出 sub_module 要将这个module分别例化成 u_sub_0 和 u_sub_1 ,并且每个都例化四次 for循环的实现方式如下 来看看例化后的效果 可以看到,总共4组inst,每组inst中存在两个

    2024年02月11日
    浏览(42)
  • vue 生成二维码的两种方式

    方式一:qrcode(无 icon 图标) 完整代码 方式二:vue-qr(有 icon 图标) 官网地址:vue-qr - npm import 引入方式 完整代码 相关配置属性 属性名 含义 text 编码内容 correctLevel 容错级别(0 - 3) size 尺寸,长宽一致, 包含外边距 margin 二维码图像的外边距,默认 20px colorDark 实点的颜色

    2024年02月15日
    浏览(41)
  • 香农公式--通信的浅显理解--单纯只是为了弄懂功率和信道容量的关系

    笔记的目标:简单梳理功率和信道容量的关系 其中主要是为了弄明白论文《Spectrum Sharing in Vehicular Networks Based on Multi-Agent Reinforcement Learning》中的应用场景问题,即功率(信道增益)与信道容量的关系 对于应用场景和其他公式的分析见我的此篇文章 香农第二定理:信息传输率

    2024年02月06日
    浏览(50)
  • k8s快速生成yaml的两种方式

    第四. 验证nginx的pod是否正常

    2024年02月15日
    浏览(55)
  • VS2019编译生成动态链接库dll的两种方式

     dll项目的默认结构如下:  四个文件的内容因为是默认生成的,不是特别重要, 接下来就是重要的修改部分: 方法一: 修改“pch.h”和“dllmain.cpp”文件,可以参考以下博主链接,但博主的引用部分有些繁琐,文末会介绍我的引用方法,和正常引用外部库步骤是一样的。这

    2023年04月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包