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

不同配置的测试结果

image

image

image

image

image

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个单元的阵列天线的波束图,这取决于不同的转向角。
image

image

image

以下三个示例显示了具有8个单元的阵列天线的波束图,这取决于不同的转向角。
image

下面的三个例子显示了波束的形状如何随着阵列天线中天线单元的数量增加而变化。
image

image

image

image

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')

image

image

image

image

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',[]);

image

点击查看代码
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]);

image

posted @ 2022-03-13 12:52  GeofferyH  阅读(660)  评论(0编辑  收藏  举报