【MIMO 从入门到精通】[P7][How does Antenna Spacing affect Beamforming]
?前言:
??
??Beamforming 是MIMO?技术里面的核心技术之一,所以讲MIMO 必须对Beamforming
有所了解,本篇主要了解一下beamforming
【MIMO 从入门到精通】[P6]【What is Beamforming?】-CSDN博客
本章主要通过数学公式 讨论一下 天线距离对 beamforming 的影响大小
一? 模型

? 如上图,双接收天线场景:
? ?信号先到达天线2?
?1.1? ? 预置条件
? ? ? ? ?接收天线1 和 接收天线2 之间的距离为d
? ? ? ? ? 电磁波的波长为
? ? ? ? ? 电磁波 周期
? ? ? ? ? 则时间延时为
? ? ? ? ? ??
1.2? 不同天线上面的输出
? ? ? ? ? ?如果不加延时器: 不同天线上权重系数为:
? ? ? ? ? ?
? ? ? ? ? ? ?: 天线个数
? ? ? ? ? ? 第一根天线
? ? ? ? ? ? ??
? ? ? ? ? ? 第二根天线
? ? ? ? ? ? ? ?(通过欧拉公式展开??
? ? ? ? ? ?
1.3 加法器输出? ? ?
? ? ? ? ? ? ? 通过加法器得到的信号为(下面例子只取其实部)
? ? ? ? ? ? ?
1.4? 例子:
? ? ? ? ? ? ?假设频率为 2500MHz
? ? ? ? ? ? ?波长为?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?下面图像为不同antennas 数量,不同的间隔,不加延时电路后输出效果:
? ?
? ?

? 结论:
? ? 1: ?度的时候,输出信号幅度最强
? ? 2:增加天线距离d 的时候,除了在0度的时候,还会在其它角度会有最强的输出信号,
比如下图 d =0.24的时候,d 越大波束赋形的效果越好
? ?3: 天线数量越多,幅度增强效果越明显

二? 代码实现
?
? ? ? ? ?如下:
? ? ? ? ??
? ? ? ? ??



# -*- coding: utf-8 -*-
"""
Created on Wed Dec 27 12:00:35 2023
@author: chengxf2
"""
import matplotlib.pyplot as plt
import numpy as np
def draw(x,y,RxNum):
    plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号
    
    label = "接收天线:"+str(RxNum)
    plt.title(label)
    # 绘制的曲线属性设置
    line1, = plt.plot(x, y, color='r', marker='d', linestyle='--', markersize=6, alpha=0.5, linewidth=3)
    
    # x,y坐标轴名称设置,可以同时设置标签的字体大小颜色等
    plt.xlabel(u'发射源发射角度', fontsize=14, color='r')
    plt.ylabel(u'输出的平均功率', fontsize=14, color='b')
    # 显示曲线图像
    plt.show()
def addAntenna(RxNum,angle,d,Y):
    #d 天线之间的距离
    #angle  发射源发射的角度
    #wavelength 电磁波波长,跟其频率有关系
    # 电磁波速度 3*10^8m/s.
    #n 第几根天线,第一根天线为基准,这里是不加延时电路
    #
    #4G网络使用的是频段为700MHz至2.7GHz的波段,对应的波长范围大致为0.1至0.4米。
    #5g 特高频(UHF)300 MHz~3000 MHz,对应电磁波的波长为分米波100cm~10 cm。 
    #5G 超高频(SHF)3 GHz~30 GHz,对应电磁波的波长为厘米波10 cm~1 cm。
    #
   wavelength =0.06*2 
   out = np.zeros(len(Y))
   T = 2*np.math.pi
   
   for n in range(0,RxNum):
         
           bias_t = (n*T*d*np.sin(angle))/wavelength #相当于公式里面n-1
           #print("\n--- n ",n,"\t bias_t",bias_t)
           w = np.cos(bias_t)
           
           signal =w*Y
           
           out = out+signal
           #print(out)
   
   return out
def receiveWave():
    
    x = np.linspace(0, 2*np.math.pi,100)
    y = np.sin(x)
    
    return x,y
def main():
    angleList = np.linspace(-np.math.pi/2.0, np.math.pi/2.0,100)
    x,y = receiveWave()
    
    RxNum =4
    distance = 0.06
  
    
    powerList =[]
    for angle in angleList:
        
        outSingle = addAntenna(RxNum,angle,distance,y)
        power = np.power(outSingle,2)
        avgpower = np.sum(power)
       
        print("\n angle :%4.3f avg: %4.2f"%(angle,avgpower))
        plt.scatter(angle, avgpower)
        powerList.append(avgpower)
    
    draw(angleList, powerList,RxNum)
    #draw(x,out)
    
main()   
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!