MatLab Toolbox - Phase Array System
本文翻译自http://www.sharetechnote.com/
ULA (Uniform Linear Array)
ULA是用于设计和模拟沿直线放置的一组天线的对象。这是用于MIMO(例如LTE MIMO)的阵列天线类型。
Basic Numerical Test
ULA_Basic_01.m
c = 3e8; % propagation speed fc = 26e9; % carrier frequency lambda = c/fc; % wavelength txarray = phased.ULA('NumElements',4,'ElementSpacing',lambda/2) txmipos = getElementPosition(txarray)/lambda txarraystv = phased.SteeringVector('SensorArray',txarray,'PropagationSpeed',c) txang = [0 ; 0]; wt = txarraystv(fc,txang)' txbeam_ang = 0; txsv = steervec(txmipos,txbeam_ang) txbeam = wt * txsv
不同配置的测试结果
Plotting Radiation Pattern in 2D
ULA_Basic_02.m
c = 3e8; % propagation speed fc = 26e9; % carrier frequency lambda = c/fc; % wavelength NoOfTxAntenna = 4 txarray = phased.ULA('NumElements',NoOfTxAntenna,'ElementSpacing',lambda/2); txmipos = getElementPosition(txarray)/lambda; txarraystv = phased.SteeringVector('SensorArray',txarray,'PropagationSpeed',c); txang = [0 ; 0]; wt = txarraystv(fc,txang)'; txbeam_ang = -90:90; txbeam_ang_rad = (pi*txbeam_ang)/180; txbeam = abs(wt*steervec(txmipos,txbeam_ang)); txbeam = txbeam/max(txbeam); [txbeampos_x,txbeampos_y] = pol2cart(deg2rad(txbeam_ang),txbeam); hFig = figure(1); set(hFig, 'Position', [0 0 800 400]); subplot(1,2,1); plot(txbeam_ang,txbeam,'r-'); xlabel('txbeam ang');ylabel('txbeam'); set(gca,'xtick',-90:15:90) xlim([txbeam_ang(1) txbeam_ang(end)]); ylim([0 1.0]); subplot(1,2,2); polarplot(txbeam_ang_rad,txbeam,'r'); set(gca,'RTickLabels',[]);
以下三个示例显示了具有4个单元的阵列天线的波束图,这取决于不同的转向角。
以下三个示例显示了具有8个单元的阵列天线的波束图,这取决于不同的转向角。
下面的三个例子显示了波束的形状如何随着阵列天线中天线单元的数量增加而变化。
Plotting Radiation Pattern in 3D
ULA_Basic_03.m
c = 3e8; % propagation speed fc = 26e9; % carrier frequency lambda = c/fc; % wavelength NoOfTxAntenna = 8 txarray = phased.ULA('NumElements',NoOfTxAntenna,'ElementSpacing',lambda/2); pattern(txarray,fc,[-180:180],[-90:90],... 'PropagationSpeed',c,... 'CoordinateSystem','polar',... 'Type','powerdb')
Steering with Custom Steering Vector
以下是定义自己的转向矢量的示例。
Example 01
本例中的转向矢量(标记为红色)来自NR的CSI码本。其推导如下所述。
点击查看代码
c = 3e8; % propagation speed fc = 26e9; % carrier frequency lambda = c/fc; % wavelength NoOfTxAntenna = 4; antennaElement = phased.CrossedDipoleAntennaElement; txarray = phased.ULA('NumElements',NoOfTxAntenna,'ElementSpacing',lambda/2,'Element',antennaElement); txmipos = getElementPosition(txarray)/lambda; txarraystv = phased.SteeringVector('SensorArray',txarray,'PropagationSpeed',c); wt = [1 exp(j*pi/4) exp(j*pi/2) (exp(j*pi/2)*exp(j*pi/4))]; txbeam_ang = -90:90; txbeam_ang_rad = (pi*txbeam_ang)/180; txbeam = abs(wt*steervec(txmipos,txbeam_ang)); txbeam = txbeam/max(txbeam); [txbeampos_x,txbeampos_y] = pol2cart(deg2rad(txbeam_ang),txbeam); hFig = figure(1); set(hFig, 'Position', [0 0 800 400]); subplot(1,2,1); plot(txbeam_ang,txbeam,'r-'); xlabel('txbeam ang');ylabel('txbeam'); set(gca,'xtick',-90:15:90) xlim([txbeam_ang(1) txbeam_ang(end)]); ylim([0 1.0]); subplot(1,2,2); polarplot(txbeam_ang_rad,txbeam,'r'); set(gca,'RTickLabels',[]);
点击查看代码
c = 3e8; % propagation speed fc = 26e9; % carrier frequency lambda = c/fc; % wavelength NoOfTxAntenna = 4; txarray = phased.ULA('NumElements',NoOfTxAntenna,'ElementSpacing',lambda/2); w = [1 exp(j*pi/4) exp(j*pi/2) (exp(j*pi/2)*exp(j*pi/4))]'; hFig = figure(1); pattern(txarray,fc,[-180:180],[-90:90],... 'PropagationSpeed',c,... 'CoordinateSystem','polar',... 'Type','powerdb', ... 'Weights',w) set(gcf,'color','w'); view(90,20); sTitle = sprintf("Antenna Array = %d by %d",1,NoOfTxAntenna); title(sTitle); set(hFig,'Position',[300 100 800 700]);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App