开源无线网络-OSRAN

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1568|回复: 0
打印 上一主题 下一主题

从波束赋形到OAM(二)

[复制链接]

38

主题

38

帖子

166

积分

注册会员

Rank: 2

积分
166
跳转到指定楼层
楼主
发表于 2023-6-22 11:55:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OAM波形仿真
看到这篇文章的同学,可以默认已经对OAM有了基本的了解,在此就不再赘述OAM角动量的含义了。在无线通信中,OAM一般是指具有涡旋相位的无线信号,为了构造涡旋相位的信号,可以使用具有涡旋面的天线或均匀圆阵列天线(UCA)。由于UCA天线简单易用实现,且可以灵活的发送不同拓扑荷的OAM信号,因此得到了较为广泛的应用。
由UCA形成的OAM,本质上仍可以认为是一种特殊的MIMO。其天线阵列如下图所示,各天线阵子均匀摆放在一个圆上,各天线阵子之间所发送信号的相位差相同,通过调整不同天线之间相位差的大小,从而实现不同拓扑荷的OAM波形。
因此,我们可以非常简单的套用上篇文章中波束赋形的仿真方式,实现OAM天线。接下来我们在Matlab中实现OAM天线,并画出相位面和幅值。
% 初始化所发送正弦信号的基础参数freq = 1.5e9;c = 3e8;lamda = c/freq;bias = [0,45,90,135];  % 仿真4种拓扑荷x = zeros(8,3);% 初始化发送天线的位置,等间隔分布在一个圆上x1 = [0.269375, 0,0];x2 = [0.190477, 0.190477,0];x3 = [0, 0.269375,0];x4 = [-0.190477, 0.190477,0];x5 = [-0.269375, 0,0];x6 = [-0.190477, -0.190477,0];x7 = [0, -0.269375,0];x8 = [0.190477, -0.190477,0];y = zeros(501,501,4);
接下来,我们在空间某位置计算各天线阵子信号的表达形式,为: <span class="MathJax_SVG" id="MathJax-Element-2-Frame" tabindex="0" data-mathml="e−j(⋅2πf⋅d/c−kθ)" role="presentation" style="display: inline-block; line-height: normal; font-size: 16px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; position: relative;">�−�(⋅2��⋅�/�−��) ,此处d为该位置距离天线阵子的距离,c为光速, <span class="MathJax_SVG" id="MathJax-Element-1-Frame" tabindex="0" data-mathml="kθ" role="presentation" style="display: inline-block; line-height: normal; font-size: 16px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; position: relative;">�� 为该天线阵子发送信号的相位值, <span class="MathJax_SVG" id="MathJax-Element-4-Frame" tabindex="0" data-mathml="θ" role="presentation" style="display: inline-block; line-height: normal; font-size: 16px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; position: relative;">� 取值为 <span class="MathJax_SVG" id="MathJax-Element-3-Frame" tabindex="0" data-mathml="[0,π/4,2π/4,3π/4]" role="presentation" style="display: inline-block; line-height: normal; font-size: 16px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; position: relative;">[0,�/4,2�/4,3�/4] ,因此可以得到每个天线阵子在该处信号的计算方式:
% 取一个正方形区域,遍历其中的点,计算相位和幅度。xrange = -5:0.02:5;yrange = -5:0.02:5;for b = bias    ii=1;    for i = xrange        jj=1;        for j = yrange            target= [i,j,20]; % 为观测点位置            % 计算每个天线阵子在观测点处的信号表达式            yy1 = exp(-1i * 2 * pi * freq * norm(target-x1)/c);            yy2 = exp(-1i *( 2 * pi * freq * norm(target-x2)/c-b/180 *pi));            yy3 = exp(-1i * (2 * pi * freq * norm(target-x3)/c-2*b/180 *pi));            yy4 = exp(-1i * (2 * pi * freq * norm(target-x4)/c-3*b/180 *pi));            yy5 = exp(-1i * (2 * pi * freq * norm(target-x5)/c-4*b/180 *pi));            yy6 = exp(-1i * (2 * pi * freq * norm(target-x6)/c-5*b/180 *pi));            yy7 = exp(-1i * (2 * pi * freq * norm(target-x7)/c-6*b/180 *pi));            yy8 = exp(-1i * (2 * pi * freq * norm(target-x8)/c-7*b/180 *pi));            % 将8个天线阵子信号叠加,即为该处信号实际形式            y(ii,jj,b/45+1)= yy1 +yy2+ yy3 +yy4+ yy5 +yy6+ yy7 +yy8;            jj = jj +1;        end        ii = ii + 1;    endend
接下来把观测区域的相位及幅度画出即可:
figurefor i = 1:4    subplot(4,2,2*(i-1) + 1)    mesh(xrange,yrange,abs(y(:,:,i)));  % 画幅值    subplot(4,2,2*(i-1) + 2)    mesh(xrange,yrange,angle(y(:,:,i)));% 画相位end
可得到下图:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|OpenXG  

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.2

快速回复 返回顶部 返回列表