【MIMO 从入门到精通】[P8][A Detailed Introduction to Beamforming]

前言:

     本篇参考油管   5G Learning 《A Detailed Introduction to Beamforming》

    简单介绍一下波束赋形的原理。

电磁波传播的数学模型如下图:

跟水波几乎是一样的,以圆形的均匀波进行传播

在各个方向上面功率大致相同。

但是我们需要方向性更好的电磁波,在某个方向上面信号特别强,

就像雷达一样测距一样,就要涉及到beamforming 的原理,

设计一个窄波束.

Beamforming 原理跟相控阵天线原理一致,所以这里面

主要结合相控阵天线原理介绍.


目录:

  1.    简介
  2.    接收相控阵天线原理
  3.    发射相控阵天线原理
  4.    Beam Steering 技术


一  简介

      由于小区的用户数量增加,以及用户期望更高的速率,运营商使用了更高的频谱进行传输。

但是高频谱带来了更高的传输损耗,需要使用高增益天线来解决该问题(High-gain)

由此引入了beam-forming技术.

        波束赋形(Beamforming)又叫波束成型、空域滤波.是一种使用传感器阵列定向发送和接收信号的信号处理技术。波束赋形技术通过调整相位阵列的基本单元的参数,使得某些角度的信号获得相长干涉,而另一些角度的信号获得相消干涉。

     根据Antenna 方案的不同,可以分为两种:

       发送波束赋形

       接收波束赋形


二   接收相控阵天线原理

     2.1  波程差

            

          如上图两根接收天线Antenna1, Antennas,之间的距离为d

         电磁波(黄线)沿着绿色的方向传播,先传播到Antenna1,再传播到

Antenna2,这段波程差  dsin\theta

          

        

      2.2 接收模型(这里面的模型不包括移相器)

            

           

              阵元间等间距: d 

              辐射电磁波依次到达: 天线1,天线2,...天线M(红色虚线)

              远场信号平面波入射角:  \theta

              天线阵元M相当于阵元0的波程差为mdsin\theta

              相邻阵元电磁波传播延时为:  \tau =\frac{dsin\theta}{c}

               子载波信号的波长:\lambda=\frac{C}{f}

               

2.3 波束形成(以两根接收电线为例):

信号源:

       s(t)=u(t)cos(w_0t)=Re\begin{Bmatrix} {u(t)e^{jw_0t}} \end{Bmatrix}(欧拉公式展开取实部)

接收的复合信号为:

       y(t)=s(t)+s(t-\tau)

y(t)=u(t)cos(w_0t)+u(t-\tau)cos[w_0(t-\tau)]

          \approx u(t)cos(w_ot)+u(t)cos(w_ot-w_o\tau)

相位差: 

\phi=w_o\tau=2\pi f \frac{dsin\theta}{c}

                  =2\pi f\frac{dsin\theta}{\lambda f}

                  =2\pi\frac{dsin\theta}{\lambda}

所以: 

   y(t)\simeq u(t)cos(w_0t)+u(t)cos(w_0t-\phi)

 为了简写,我们写成下面形式

 y(t)=Re\begin{Bmatrix} u(t)e^{jw_o t}+u(t)e^{jw_0t}e^{-j\phi } \end{Bmatrix}

   通过上面我们可以知道

   y(t)=s_0(t)\sum_{n=1}^{M}e^{-j(n-1)\phi}(取实部)

 定义一个阵列因子:

 AF(\theta)=\sum_{n=1}^{M}e^{-j(n-1)\phi}

   y(t)=s(t)AF(\theta)

 则:  AF(\theta)=\frac{y(t)}{s(t)}

更为普遍的写成下面形式:类似信号放大器作用

2.4 移相器

      第一个移相器:输入信号s_0(t),输出信号s_0(t)

       第二个移相器: 输入信号乘以s_0(t)e^{-j\psi}, 乘以 e^{j\psi},输出信号s_0(t)

       第三个移相器:输入信号s_0(t)e^{-j2\psi},乘以e^{j2\psi},输出信号 s_0(t)

       依次类推

      最后通过加法器得到的信号为

        y=ms_0(t)


三  发射相控阵天线原理

3.1  双天线,不加延时电路场景

利用天线接收,发射互易原理;将信号s_0(t)发射到\theta方向

 如上图,antenna1 anteena2 发送的信号都是s_0(t)

考虑\theta方向(红线)两个信号干涉后得到的信号为

s_0(t)+s_0(t)e^{-j\phi}

 其中\phi=2\pi \frac{dsin\theta}{\lambda}

3.2  增加延时电路场景

 

  x_0(t)=s_0(t)

  x_1(t)=s_0(t)e^{j\phi }

...

  x_{M-1}(t)=s_0(t)e^{j(M-1)\phi }

  因为波程差引起的相位延迟一次为

 e^0, e^{-j\phi},e^{-j(M-1)\phi}

  所以\theta方向干涉得到的信号为

 y(t)=s_0(t)+s_0(t)e^{j\phi}e^{-j\phi}+...+s_0(t)e^{j(M-1)\phi}e^{-j(M-1)\phi}

            =Ms_0(t)


 四  Beam Steering 技术

        波束赋形(beamforming)和波束控制(beam steering)是无线通信中类似的概念,但它们有一些关键的区别。


        波束赋形是一种信号处理技术,可在特定方向上形成无线电波束。这是通过调整多个天线发射的信号的相位和幅度来实现的,以便它们在特定方向上建设性地组合,同时在其他方向上破坏性地抵消。波束赋形可以通过将传输功率集中在预期接收器的方向来提高信噪比并增加无线网络的容量.
        波束控制是一种动态改变波束方向的技术,基于预期接收者的位置。这是通过根据接收器的反馈或接收器的估计位置实时调整每个天线发射的信号的相位和幅度来完成的。波束控制可以通过使波束适应不断变化的环境来提高链路质量并减少干扰。
总之,波束赋形在固定方向上形成波束,而波束控制则在不同方向上引导波束。这两种技术可以一起使用来提高无线网络的性能。
 

该模型主要是增加了延时电路

如上图 绿色为信号传播方向,一次到达天线0,1,2

则传播时延依次为 0,\tau,2\tau

其中 \tau =\frac{dsin\theta}{c}

x_0(t)=x(t)cos(w_0t)(无波程差延时)

x_1(t)=x(t-\tau+\Delta T) (波程差延时+延时电路延时)

            =x(t-\tau+\Delta T)cos(w_0(t-\tau+\Delta T))

          \cong x(t)e^{-j(w_0\Delta T-w_0\tau)}

        =x(t)e^{-j(\beta-\phi)}

     其中: 

   \phi: 波程差引起的相位差

  \beta: 延时电路引起的相位差

 原来信号在\phi=0的时候为Main Lobe 主瓣信号

现在跟\beta 有关系


三  Python 仿真

   我们调整天线距离d, 

    远场信号平面波入射角:  \theta

    可以得到不同的增益图形(\theta,gain)

   其中gain 就是AF的db 表示形式

1: 没有加入移相器的效果(beamforming)

    2: 增加移相器的效果(beamSteering)

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 22 11:33:36 2024

@author: chengxf2
"""



import numpy as np
import matplotlib.pyplot as plt


def drawDB(x,y):
    x_ticks = np.arange(-90, 90, 5)#原始数据有13个点,故此处为设置从0开始,间隔为1

    plt.figure(figsize=(14, 6), dpi=80)#设置绘图区域的大小和像素
    ax = plt.axes().set_facecolor('black')
    plt.xlabel('angle')
    plt.ylabel('Gain(db')
    plt.xticks(x_ticks)

    plt.plot(x, y,  color='#00FF00',linewidth=5)
    plt.grid(b=True)
    plt.show()
    #plt.legend()

def angle_rad(angle=30):
    #把角度转换为弧度   
    rad = angle*(np.math.pi/180)
    
    return rad

def calcGain(phaseBias,N):
    #获取天线增益 db
    a = 0.0

    for i in range(N):
        
        phase = i*phaseBias
        a=  a+np.cos(phase)
        #b = b+ np.sin(phase)
        
       
    db = 10*np.log10((a/N)**2+1e-3)
        
    return db

def calcGainSteering(phaseBias,beta,N):
    #获取天线增益 db
    a = 0.0

    for i in range(N):
        
        phase = i*(beta-phaseBias)
        a=  a+np.cos(phase)
        #b = b+ np.sin(phase)
        
       
    db = 10*np.log10((a/N)**2+1e-3)
        
    return db
    
    
    


def get_phaseBias(wavelength=0.1, d=0.01, angle=30):
    '''
    

    Parameters
    ----------
    wavelength : 波长
    d : 天线之间的距离
    angle :发送电磁波的角度,跟天线平面法线夹角

    Returns
    -------
    phaseBias 相位差

    '''
    
    rad = angle_rad(angle)
    
    phaseBias = 2*np.math.pi*(d/wavelength)*np.sin(rad)
    
    return phaseBias


def beamforming(angList,wavelength,dbList,d,N):
    #无移相器
    for angle in angList:
        #波程差引起的相位差
        phaseBias = get_phaseBias(wavelength, d, angle)
        #天线增益
        gain=calcGain(phaseBias, N)
        dbList.append(gain)
        #print("\n angle",angle, "\t phaseBias%4.3f"% phaseBias,"\t db:  %7.3f"%db)
    
    drawDB(angList, dbList) 
    
def beamSteering(angList,wavelength,dbList,d,N,beta):
    #无移相器
    
    radBeta = beta*(np.math.pi/180)
    for angle in angList:
        #波程差引起的相位差
        phaseBias = get_phaseBias(wavelength, d, angle)
        #天线增益
        gain=calcGainSteering(phaseBias,radBeta, N)
        dbList.append(gain)
        #print("\n angle",angle, "\t phaseBias%4.3f"% phaseBias,"\t db:  %7.3f"%db)
    
    drawDB(angList, dbList) 
    
def main():
    
    angList = np.arange(-90, 90,1) #0到360度,间隔10度
    wavelength = 0.1 #波长
    dbList =[]
    d = wavelength*0.5 #天线之间的间隔
    N = 4  #天线个数
    beta = -60
    
    beamforming(angList,wavelength,dbList,d,N)
    #beamSteering(angList,wavelength,dbList,d,N,beta)
    
    

if __name__ == "__main__":
      main()
    


参考:

2.波束成形简介_哔哩哔哩_bilibili

【Matlab应用】:相控阵天线方向图合成及波束扫描算法实现 - 知乎

天线基本原理(Dipole推导) - 百度文库

天线理论与设计笔记3--(天线阵列) - 知乎

波束成形_百度百科

beamforming_360百科

https://www.youtube.com/watch?v=HKpQP8H4JRc

相控阵雷达阵列天线仿真计算_雷达天线方向图仿真-CSDN博客

相控阵雷达的工作原理,阵列间波束形成(DBF)(含matlab仿真) - 知乎

CST仿真相控阵天线波束指向随参数变化而变化的小技巧_哔哩哔哩_bilibili

使用2个元素天线阵列波束成形仿真_哔哩哔哩_bilibili

7.相控阵天线的基本工作原理_哔哩哔哩_bilibili7.相控阵天线的基本工作原理_哔哩哔哩_bilibili

有源电扫相控阵雷达原理演示_哔哩哔哩_bilibili

阵列天线波束形成原理,相位差φ、方向角θ有啥关系?_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【赠书第17期】Excel高效办公:文秘与行政办公(AI版)

文章目录 前言 1 了解Excel的强大功能和工具 2 提升Excel技能的方法 3 结合AI技术提升Excel应用 4 注意事项 5 推荐图书 6 粉丝福利 前言 随着人工智能(AI)技术的快速发展,我们的工作方式也在发生深刻变革。其中,Excel 作…

使用Python对音频进行特征提取

在几年前写的使用Python对音频进行特征提取使用的是人为特征的方法进行特征提取的,近些年随着深度学习的普及,这里尝试使用深度学习方法进行特征提取。 数据集测试 之前的数据集找不到了,这个数据其实是kaggle的一个数据:www.ka…

【Linux C | 进程】进程环境 | 什么是进程?进程的开始、终止、存储空间布局、命令行参数、环境变量

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

LV.19 D1 C++简介 学习笔记

一、C概述 1.1 C的前世今生 C是一种被广泛使用的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程范式,例如过程化程序设计、面向对象程序设计、泛型程序设计和函数式程序设计等。 C的发展: 1.2 C的主要应用领域 C是一门运用很广…

医学图像的数据增强技术 --- 切割-拼接数据增强(CS-DA)

医学图像的新型数据增强技术 CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想 论文链接:https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf 大多数用于医学分割的数据增强技术最初是在自然图像上开…

如何使用pytorch的Dataset, 来定义自己的Dataset

Dataset与DataLoader的关系 Dataset: 构建一个数据集,其中含有所有的数据样本DataLoader:将构建好的Dataset,通过shuffle、划分batch、多线程num_workers运行的方式,加载到可训练的迭代容器。 import torch from torch.utils.dat…

HYBBS 表白墙网站PHP程序源码 可封装成APP

源码介绍 PHP表白墙网站源码,可以做校园内的,也可以做校区间的,可封装成APP。告别QQ空间的表白墙吧。 安装PHP5.6以上随意 上传程序安装,然后设置账号密码,登陆后台切换模板手机PC都要换开启插件访问前台。 安装完…

IS-IS:01 ISIS基本配置

这是实验拓扑,下面是基本配置: R1: sys sysname R1 user-interface console 0 idle-timeout 0 0 int loop 0 ip add 1.1.1.1 24 int g0/0/0 ip add 192.168.12.1 24 qR2: sys sysname R2 user-interface console 0 idle-timeout 0 0 int loop 0 ip add …

Python Web 开发之 Flask 入门实践

导语:Flask 是一个轻量级的 Python Web 框架,广受开发者喜爱。本文将带领大家了解 Flask 的基本概念、搭建一个简单的 Web 项目以及如何进一步扩展功能。 一、Flask 简介 Flask 是一个基于 Werkzeug 和 Jinja2 的微型 Web 框架,它的特点是轻…

万物简单AIoT 端云一体实战案例学习 之 快速开始

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 物联网具有场景多且复杂、链路长且开发门槛高等特点,让很多想学习或正在学习物联网的学生或开发者有点不知所措,甚至直接就放弃了。    万物简单AIoT物联网教育…

批量修改拓展名的方法

新建一个文本文档 输入ren *(.你需要更改的拓展名)*.(更改后的拓展名) 注意:*前面要有空格, txt前面有一个 ". "如上图所示 注意:这个文件建在你需要更改拓展名的文件夹,此文件夹中的所有的txt…

深度学习记录--指数加权平均

指数加权移动平均(exponentially weighted moving averages) 如何对杂乱的数据进行拟合? 通过指数加权平均可以把数据图近似拟合成一条曲线 公式: 其中表示第t个平均数,表示第t-1个平均数,表示第t个数据,表示变化参数…

蚂蚁数科CTO王维首次公开亮相:进一步拓展数据相关技术布局

“AI与数据是相生相伴的共同体,高质量的行业数据才能使大模型在产业发挥更大价值。蚂蚁数科将进一步拓展数据相关技术的布局,以加速产业数字化迈入下一阶段。”1月19日,王维首次以蚂蚁数科CTO的身份亮相媒体沟通会。 数据是数字时代的“新石…

【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

针对Java对象压缩及序列化技术的探索之路 序列化和反序列化为何需要有序列化呢?Java实现序列化的方式二进制格式 指定语言层级二进制格式 跨语言层级JSON 格式化类JSON格式化:XML文件格式化 序列化的分类在速度的对比上一般有如下规律:Java…

如何优雅的实现前端国际化?

JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库! i18next i18next 是一个用 JavaScript 编写的全面的国际化框架…

ubuntu安装vm和Linux,安装python环境,docker和部署项目(一篇从零到部署)

1、下载Ubuntu Index of /releaseshttps://old-releases.ubuntu.com/releases/ 2、下载VMware 官方正版VMware下载(16 pro):https://www.aliyundrive.com/s/wF66w8kW9ac 下载Linux系统镜像(阿里云盘不限速)&#xff…

[数据结构 - C++] 红黑树RBTree

文章目录 1、前言2、红黑树的概念3、红黑树的性质4、红黑树节点的定义5、红黑树的插入Insert6、红黑树的验证7、红黑树与AVL树的比较附录: 1、前言 我们在学习了二叉搜索树后,在它的基础上又学习了AVL树,知道了AVL树是靠平衡因子来调节左右高…

Mybatis之关联

一、一对多关联 eg:一个用户对应多个订单 建表语句 CREATE TABLE t_customer (customer_id INT NOT NULL AUTO_INCREMENT, customer_name CHAR(100), PRIMARY KEY (customer_id) ); CREATE TABLE t_order ( order_id INT NOT NULL AUTO_INCREMENT, order_name C…

git克隆/拉取报错过早的文件结束符(EOF)的原因及解决

近期使用git拉取仓库的时候,拉取了好几次都不行,总是反馈说过早的文件结束符 总是这样,当然我的报错信息并没有描述完整,因为在我检索此类问题的时候,我发现有好多种所谓的过早的文件结束符这样的报错,但是…

机器学习实验报告——EM算法

目录 一、算法介绍 1.1算法背景 1.2算法引入 1.3算法假设 1.4算法原理 1.5算法步骤 二、算法公式推导 2.1数学基础 2.2EM算法推导 三、算法实现 3.1关于EM聚类 3.2EM工具包的使用 3.3 实例测试 四、算法讨论 4.1EM算法的优缺点 4.2EM算法的应用 4.3对于EM算法…