luhan 发表于 2021-8-1 10:24:55

从波束赋形到OAM(一)

波束赋形仿真最近一段时间研究了一下无线通信中轨道角动量(OAM)的实现方式,虽然从原理上解释比较简单,但从仿真实现上,仍需要对多天线的实现机制有较多的了解。本文将通过几个示例,逐步介绍OAM在Matlab中的实现方式。首先我们介绍在Matlab中波束赋形的实现方式,假设有一个K天线阵列,各天线间距为dist,每个天线全向发送余弦波 cos(2pi * f * t + bias_k),dist = lamda/2,lamda 为波长。https://pic4.zhimg.com/80/v2-81cd59ef6f2eae4e2e469c372ea872cf_1440w.jpg波束赋形天线示意图令bias_k = k * phi ,让 phi在 内取不同值,在距离第一根天线 d处位置(d>>dist )计算各天线信号叠加,观测点与天线阵列角度为 [-pi, pi]。可发现观测点的场强随 phi的变化而发生变化,由各天线信号叠加形成的波束指向会随着phi的取值而变化。具体Matlab 的代码如下:%初始化余弦波波长、频率、天线个数等参数lamda = 0.1;freq = 3e9;c = lamda * freq; % c为光速dist = lamda /2 ;d = 50;theta = pi;N_ant=16;amp=zeros(1,round(theta / 0.01)+1 );% 用于存储各观测点的信号幅值
接下来计算在观测点处,各个天线辐射信号叠加的幅度,并作图:for bias = 0:0.01:pij=1;amp=zeros(1,2* round(theta / 0.01)+1 );for i=-pi:0.01:pi    for k = 1:N_ant      % 以下式子是用于计算每个天线在d处的叠加      amp(1,j) = amp(1,j) + cos(2*pi*freq * ( d+(k-1)*dist * cos(i) - (k-1)*dist * cos(bias))/c );    end    j = j+1;endclf;%plot((-pi:0.01:pi)/pi * 180,abs(amp.*cos(i))); %如果没有polarplotdb函数,可以直接在二维坐标系内画幅值与角度关系polarplotdb((-pi:0.01:pi),abs(amp)/N_ant,'-r'); pause(0.1);hold offend

以上仅从空间信号叠加的角度仿真波束赋形,可以得到下图。当然也可以通过数学公式推算,形成一个各方向幅值的表达式,本文不再对这部分开展描述。https://pic1.zhimg.com/v2-427835ec8c3510ae600fc16aede3bea4_b.jpg


页: [1]
查看完整版本: 从波束赋形到OAM(一)