Matlab: Introduction to Hybrid Beamforming

文章目录

  • 来源
  • 混合波束赋形的基本概念
  • System Setup

来源

在matlab的命令行输入
doc hybrid beamforming

混合波束赋形的基本概念

混合波束形成简介
本例介绍了混合波束形成的基本概念,并说明了如何模拟这种系统。

现代无线通信系统使用空间复用来提高散射体丰富的环境中系统内的数据吞吐量。为了通过信道发送多个数据流,从信道矩阵中导出一组预编码和组合权重。那么每个数据流都可以独立恢复。这些权重包含幅度和相位项,通常应用于数字域。模拟这种系统的一个例子可以在使用天线阵列提高无线通信的SNR和容量的例子中找到。在下图所示的系统图中,每个天线都连接到一个独特的发射和接收(TR)模块。在这里插入图片描述

对高数据速率和更多用户容量的日益增长的需求增加了更有效地使用频谱的需求。因此,下一代5G无线系统将使用毫米波频段来利用其更宽的带宽。此外,5G系统部署了大规模天线阵列,以减轻毫米波频段的严重传播损耗。然而,这些配置带来了其独特的技术挑战。

与目前的无线系统相比,毫米波波段的波长要小得多。虽然这允许一个阵列包含更多具有相同物理尺寸的单元,但为每个天线单元提供一个TR模块会变得昂贵得多。因此,作为一种折衷,TR开关通常用于为多个天线元件供电。这与雷达社区中使用的子阵列配置是相同的概念。下图显示了一种这样的配置。在这里插入图片描述
上图显示,在发射端,TR开关的数量小于天线单元的数量 N T N_T NT。为了提供更大的灵活性,每个天线元件可以连接到一个或多个TR模块。此外,可以在每个TR模块和天线之间插入模拟移相器,以提供一些有限的转向能力。

接收器端的配置类似,如图所示。此系统可以支持的最大数据流数量 N S N_S NS N T R F N_{TRF} NTRF N R R F N_{RRF} NRRF中较小的一个。

在这种配置中,不再可能对每个天线元件应用数字权重。相反,数字权重只能应用于每个RF链。在元件级,信号由模拟移相器调整,该移相器仅改变信号的相位。因此,预编码或组合实际上分两个阶段完成。由于这种方法在数字域和模拟域都执行波束成形,因此被称为混合波束成形。

System Setup

This section simulates a 64 x 16 MIMO hybrid beamforming system, with a 64-element square array with 4 RF chains on the transmitter side and a 16-element square array with 4 RF chains on the receiver side.

Nt = 64;
NtRF = 4;Nr = 16;
NrRF = 4;

In this simulation, it is assumed that each antenna is connected to all RF chains. Thus, each antenna is connected to 4 phase shifters. Such an array can be modeled by partitioning the array aperture into 4 completely connected subarrays.

rng(4096);
c = 3e8;
fc = 28e9;
lambda = c/fc;
txarray = phased.PartitionedArray(...'Array',phased.URA([sqrt(Nt) sqrt(Nt)],lambda/2),...'SubarraySelection',ones(NtRF,Nt),'SubarraySteering','Custom');
rxarray = phased.PartitionedArray(...'Array',phased.URA([sqrt(Nr) sqrt(Nr)],lambda/2),...'SubarraySelection',ones(NrRF,Nr),'SubarraySteering','Custom');

To maximize the spectral efficiency, each RF chain can be used to send an independent data stream. In this case, the system can support up to 4 streams.

Next, assume a scattering environment with 6 scattering clusters randomly distributed in space. Within each cluster, there are 8 closely located scatterers with an angle spread of 5 degrees, for a total of 48 scatterers. The path gain for each scatterer is obtained from a complex circular symmetric Gaussian distribution.

Ncl = 6;
Nray = 8;
Nscatter = Nray*Ncl;
angspread = 5;
% compute randomly placed scatterer clusters
txclang = [rand(1,Ncl)*120-60;rand(1,Ncl)*60-30];
rxclang = [rand(1,Ncl)*120-60;rand(1,Ncl)*60-30];
txang = zeros(2,Nscatter);
rxang = zeros(2,Nscatter);
% compute the rays within each cluster
for m = 1:Ncltxang(:,(m-1)*Nray+(1:Nray)) = randn(2,Nray)*sqrt(angspread)+txclang(:,m);rxang(:,(m-1)*Nray+(1:Nray)) = randn(2,Nray)*sqrt(angspread)+rxclang(:,m);
endg = (randn(1,Nscatter)+1i*randn(1,Nscatter))/sqrt(Nscatter);The channel matrix can be formed as 
txpos = getElementPosition(txarray)/lambda;
rxpos = getElementPosition(rxarray)/lambda;
H = scatteringchanmtx(txpos,rxpos,txang,rxang,g);

Hybrid Weights Computation
In a spatial multiplexing system with all digital beamforming, the signal is modulated by a set of precoding weights, propagated through the channel, and recovered by a set of combining weights. Mathematically, this process can be described by Y = (XFH+N)W where X is an Ns-column matrix whose columns are data streams, F is an Ns Nt matrix representing the precoding weights, W is an Nr Ns matrix representing the combining weights, N is an Nr-column matrix whose columns are the receiver noise at each element, and Y is an Ns-column matrix whose columns are recovered data streams. Since the goal of the system is to achieve better spectral efficiency, obtaining the precoding and combining weights can be considered as an optimization problem where the optimal precoding and combining weights make the product of FHW’ a diagonal matrix so each data stream can be recovered independently.
In a hybrid beamforming system, the signal flow is similar. Both the precoding weights and the combining weights are combinations of baseband digital weights and RF band analog weights. The baseband digital weights convert the incoming data streams to input signals at each RF chain and the analog weights then convert the signal at each RF chain to the signal radiated or collected at each antenna element. Note that the analog weights can only contain phase shifts.
Mathematically, it can be written as F=Fbb
Frf and W=WbbWrf, where Fbb is an Ns NtRF matrix, Frf an NtRF Nt matrix, Wbb an NrRF Ns matrix, and Wrf an Nr NrRF matrix. Since both Frf and Wrf can only be used to modify the signal phase, there are extra constraints in the optimization process to identify the optimal precoding and combining weights. Ideally, the resulting combination of FbbFrf and Wrf*Wbb are close approximations of F and W that are obtained without those constraints.
Unfortunately, optimizing all four matrix variables simultaneously is quite difficult. Therefore, many algorithms are proposed to arrive at suboptimal weights with a reasonable computational load. This example uses the approach proposed in [1] which decouples the optimizations for the precoding and combining weights. It first uses the orthogonal matching pursuit algorithm to derive the precoding weights. Once the precoding weights are computed, the result is then used to obtain the corresponding combining weights.
Assuming the channel is known, the unconstrained optimal precoding weights can be obtained by diagonalizing the channel matrix and extracting the first NtRF dominating modes. The transmit beam pattern can be plotted as

F = diagbfweights(H);
F = F(1:NtRF,:);
pattern(txarray,fc,-90:90,-90:90,'Type','efield',...'ElementWeights',F','PropagationSpeed',c);

在这里插入图片描述

The response pattern above shows that even in a multipath environment, there are limited number of dominant directions.
The hybrid weights, on the other hand, can be computed as

At = steervec(txpos,txang);
Ar = steervec(rxpos,rxang);Ns = NtRF;
[Fbb,Frf] = omphybweights(H,Ns,NtRF,At);

The beam pattern of the hybrid weights is shown below:

pattern(txarray,fc,-90:90,-90:90,'Type','efield',...'ElementWeights',Frf'*Fbb','PropagationSpeed',c);

在这里插入图片描述

Compared to the beam pattern obtained using the optimal weights, the beam pattern using the hybrid weights is similar, especially for dominant beams. This means that the data streams can be successfully transmitted through those beams using hybrid weights.

Spectral Efficiency Comparison
One of the system level performance metrics of a 5G system is the spectral efficiency. The next section compares the spectral efficiency achieved using the optimal weights with that of the proposed hybrid beamforming weights. The simulation assumes 1 or 2 data streams as outlined in [1]. The transmit antenna array is assumed to be at a base station, with a focused beamwidth of 60 degrees in azimuth and 20 degrees in elevation. The signal can arrive at the receive array from any direction. The resulting spectral efficiency curve is obtained from 50 Monte-Carlo trials for each SNR.

snr_param = -40:5:0;
Nsnr = numel(snr_param);
Ns_param = [1 2];
NNs = numel(Ns_param);NtRF = 4;
NrRF = 4;Ropt = zeros(Nsnr,NNs);
Rhyb = zeros(Nsnr,NNs);
Niter = 50;for m = 1:Nsnrsnr = db2pow(snr_param(m));for n = 1:Niter% Channel realizationtxang = [rand(1,Nscatter)*60-30;rand(1,Nscatter)*20-10];rxang = [rand(1,Nscatter)*180-90;rand(1,Nscatter)*90-45];At = steervec(txpos,txang);Ar = steervec(rxpos,rxang);g = (randn(1,Nscatter)+1i*randn(1,Nscatter))/sqrt(Nscatter);H = scatteringchanmtx(txpos,rxpos,txang,rxang,g);for k = 1:NNsNs = Ns_param(k);% Compute optimal weights and its spectral efficiency[Fopt,Wopt] = helperOptimalHybridWeights(H,Ns,1/snr);Ropt(m,k) = Ropt(m,k)+helperComputeSpectralEfficiency(H,Fopt,Wopt,Ns,snr);% Compute hybrid weights and its spectral efficiency[Fbb,Frf,Wbb,Wrf] = omphybweights(H,Ns,NtRF,At,NrRF,Ar,1/snr);Rhyb(m,k) = Rhyb(m,k)+helperComputeSpectralEfficiency(H,Fbb*Frf,Wrf*Wbb,Ns,snr);endend
end
Ropt = Ropt/Niter;
Rhyb = Rhyb/Niter;plot(snr_param,Ropt(:,1),'--sr',...snr_param,Ropt(:,2),'--b',...snr_param,Rhyb(:,1),'-sr',...snr_param,Rhyb(:,2),'-b');
xlabel('SNR (dB)');
ylabel('Spectral Efficiency (bits/s/Hz');
legend('Ns=1 optimal','Ns=2 optimal','Ns=1 hybrid', 'Ns=2 hybrid',...'Location','best');
grid on;

在这里插入图片描述

This figure shows that the spectral efficiency improves significantly when we increase the number of data streams. In addition, the hybrid beamforming can perform close to what optimal weights can offer using less hardware.

Summary
This example introduces the basic concept of hybrid beamforming and shows how to split the precoding and combining weights using orthogonal matching pursuit algorithm. It shows that hybrid beamforming can closely match the performance offered by optimal digital weights.
References
[1] Omar El Ayach, et al. Spatially Sparse Precoding in Millimeter wave MIMO Systems, IEEE Transactions on Wireless Communications, Vol. 13, No. 3, March 2014.
Copyright 2017 The MathWorks, Inc.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2808135.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【ubuntu】永久修改主机名

文章目录 1. 问题描述2. 解决方案 1. 问题描述 主机名过长(后面的部分) 2. 解决方案 查看主机名详情 hostnamectl修改指定主机名 hostnamectl set-hostname ubuntu2204 --static登出重进即可

通过底层原理理解Java是值传递还是引用传递?

本文学习目标或者巩固的知识点 参数传递方式 值传递引用传递指针传递 彻底理解Java的值传递和引用传递 从底层的角度分析值传递会发生复制行为 Java的参数传递例子 快手的一面面试曾经问到过此类题目,所以记下此篇加深印象。 问:求下面main方法中的输…

深度学习500问——Chapter01:数学基础

文章目录 前言 1.1 向量和矩阵 1.1.1 标量、向量、矩阵、张量之间的联系 1.1.2 张量与矩阵的区别 1.1.3 矩阵和向量相乘结果 1.1.4 向量和矩阵的范数归纳 1.1.5 如何判断一个矩阵为正定 1.2 导数和偏导数 1.2.1 导数偏导计算 1.2.2 导数和偏导数有什么区别 1.3 特征值和特征向量…

矩阵的导数运算(理解分子布局、分母布局)

矩阵的导数运算(理解分子布局、分母布局) 1、分子布局和分母布局 请思考这样一个问题,一个维度为m的向量y对一个标量x的求导,那么结果也是一个m维的向量,那么这个结果向量是行向量,还是列向量呢? 答案是&#xff1a…

Java学习笔记------继承

继承 Java中提供了一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立继承关系 如图,Student和Teacher类中除了study()和teacher()两个成员函数不同,其他重复了&…

森歌深化体育营销战略,揭晓2024奥运新代言人,携手共创影响力奇迹

2024年,奥运龙年的春节将将过去,各大高端品牌便纷纷开始激烈博弈。森歌有备而来!布局早,积累深,以其深入骨髓的体育情怀和独具匠心的品牌策略,成为厨电行业的佼佼者。2月27日-2月28日,森歌将在杭…

c++: 用c++语言对车辆进行建模

一 原理 1.1 阿克曼转向模型 转向半径:后轴中心点到原点O的距离 已知道转向半径,可以反求转向角。或者知道转向角,可以求出转向半径。 四个顶点的转向半径。 还要定义这两个参数 1.2 车辆运动的建模 运动写在大的while循环里。 绘制车辆的思路;(1)清

C++之std::tuple(二) : 揭秘底层实现原理

相关系列文章 C之std::tuple(二) : 揭秘底层实现原理 C三剑客之std::any(一) : 使用 C之std::tuple(一) : 使用精讲(全) C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二):深入剖析 深入理解可变参数(va_list、std::initializer_list和可变参数模版) st…

《论文阅读》利用提取的情感原因提高共情对话生成的内容相关性 CCL 2022

《论文阅读》利用提取的情感原因提高共情对话生成的内容相关性 前言简介模型架构情绪识别情绪原因提取实验结果示例总结前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Using Extracted Emotion Caus…

module ‘json‘ has no attribute ‘dumps‘

如果在使用Python的json模块时遇到AttributeError: module json has no attribute dumps错误,通常是因为在Python环境中json模块不支持dumps方法。这种情况可能是因为Python的json模块被重命名或修改过导致的。 解决方法可以尝试以下几种: 1.检查Pytho…

从docx提取文本的Python实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

2.23 Qt day4 事件机制+定时器事件+键盘事件+鼠标事件

思维导图&#xff1a; 做一个闹钟&#xff0c;在行编辑器里输入定闹钟的时间&#xff0c;时间到了就语音播报文本里的内容&#xff0c;播报五次 widget.h&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QDebug>//输出类 #include<…

使用matlab对探空站IGRAv2数据进行提取

目录 1.IGRA的下载 2.以CHM00050527-data.txt数据为例&#xff1a; 3.使用matlab进行数据提取&#xff1a; 4.mat文件的构成如下图&#xff1a; 5. Matlab 获取代码可关注微信公众号WZZHHH&#xff0c;或者咸鱼关注&#xff1a;WZZHHH123 6.部分代码展示&#xff1a; 1.I…

用什么软件制作电子杂志

想要制作高大上的电子杂志&#xff1f;别再烦恼啦&#xff01;今天给大家推荐一款超级实用的软件&#xff0c;让你轻松制作出专业水准的电子杂志&#xff01; 这款软件功能强大&#xff0c;操作简单&#xff0c;适合所有对设计感兴趣的小伙伴们。无论是新手还是专业设计师&…

神经网络系列---感知机(Neuron)

文章目录 感知机(Neuron)感知机(Neuron)的决策函数可以表示为&#xff1a;感知机(Neuron)的学习算法主要包括以下步骤&#xff1a;感知机可以实现逻辑运算中的AND、OR、NOT和异或(XOR)运算。 感知机(Neuron) 感知机(Neuron)是一种简单而有效的二分类算法&#xff0c;用于将输入…

Cenos7搭建gitLib服务器(全网最详细)

vm安装Cenos7可参考以下链接 VM安装Cenos7(全网超详细保姆教程)_vm centos7安装教程-CSDN博客 一.安装并配置必要的依赖关系 1.1安装依赖包 安装curl、policycoreutils-python、openssh-server依赖包 yum install -y curl policycoreutils-python openssh-server 在这个…

【嵌入式实践】【芝麻】【目录】从0到1给电动车添加指纹锁

0. 前言 该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹&#xff0c;电动车进入P档等待时计时&#xff0c;计时超过5min则自动锁车&#xff0c;计时过程中按刹车可中断P档状态&#xff0c;同时中断锁车计时。改项目我称之为“芝…

Zookeeper客户端命令、JAVA API、监听原理、写数据原理以及案例

1. Zookeeper节点信息 指定服务端&#xff0c;启动客户端命令&#xff1a; bin/zkCli.sh -server 服务端主机名:端口号 1&#xff09;ls / 查看根节点下面的子节点 ls -s / 查看根节点下面的子节点以及根节点详细信息 其中&#xff0c;cZxid是创建节点的事务id&#xff0c…

【Java程序设计】【C00302】基于Springboot的校园失物招领管理系统(有论文)

基于Springboot的校园失物招领管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的校园失物招领网站&#xff0c;本系统有管理员以及用户二种角色权限&#xff1b; 系统整体功能有&#xff1a;操作日志管理、…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--大模型、扩散模型

专属领域论文订阅 VX 关注{晓理紫}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 分类: 大语言模型LLM视觉模型VLM扩散模型视觉语言…