Matlab Toolbox - Antenna
ULA (Uniform Linear Array)
ULA is the Object that is for design and simulating the set of antenna placed along a line. This is the type of array antenna that are used for MIMO (e.g, LTE MIMO).
|
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 |
|
txang = [0 ; 0]; txbeam_ang = 0 |
|
txarray =
phased.ULA with properties:
Element: [1×1 phased.IsotropicAntennaElement] NumElements: 4 ElementSpacing: 0.0058 ArrayAxis: 'y' Taper: 1
txmipos =
0 0 0 0 -0.7500 -0.2500 0.2500 0.7500 0 0 0 0
txarraystv =
phased.SteeringVector with properties:
SensorArray: [1×1 phased.ULA] PropagationSpeed: 300000000 IncludeElementResponse: false NumPhaseShifterBits: 0
wt =
1 1 1 1
txsv =
1 1 1 1
txbeam =
4 |
|
txang = [0 ; 0]; txbeam_ang = -10 |
|
txarray =
phased.ULA with properties:
Element: [1×1 phased.IsotropicAntennaElement] NumElements: 4 ElementSpacing: 0.0058 ArrayAxis: 'y' Taper: 1
txmipos =
0 0 0 0 -0.7500 -0.2500 0.2500 0.7500 0 0 0 0
txarraystv =
phased.SteeringVector with properties:
SensorArray: [1×1 phased.ULA] PropagationSpeed: 300000000 IncludeElementResponse: false NumPhaseShifterBits: 0
wt =
1 1 1 1
txsv =
0.6835 + 0.7300i 0.9630 + 0.2694i 0.9630 - 0.2694i 0.6835 - 0.7300i
txbeam =
3.2930 |
|
txang = [0 ; 0]; txbeam_ang = 10 |
|
txarray =
phased.ULA with properties:
Element: [1×1 phased.IsotropicAntennaElement] NumElements: 4 ElementSpacing: 0.0058 ArrayAxis: 'y' Taper: 1
txmipos =
0 0 0 0 -0.7500 -0.2500 0.2500 0.7500 0 0 0 0
txarraystv =
phased.SteeringVector with properties:
SensorArray: [1×1 phased.ULA] PropagationSpeed: 300000000 IncludeElementResponse: false NumPhaseShifterBits: 0
wt =
1 1 1 1
txsv =
0.6835 - 0.7300i 0.9630 - 0.2694i 0.9630 + 0.2694i 0.6835 + 0.7300i
txbeam =
3.2930 |
|
txang = [-10 ; 0]; txbeam_ang = 0 |
|
txarray =
phased.ULA with properties:
Element: [1×1 phased.IsotropicAntennaElement] NumElements: 4 ElementSpacing: 0.0058 ArrayAxis: 'y' Taper: 1
txmipos =
0 0 0 0 -0.7500 -0.2500 0.2500 0.7500 0 0 0 0
txarraystv =
phased.SteeringVector with properties:
SensorArray: [1×1 phased.ULA] PropagationSpeed: 300000000 IncludeElementResponse: false NumPhaseShifterBits: 0
wt =
0.6835 - 0.7300i 0.9630 - 0.2694i 0.9630 + 0.2694i 0.6835 + 0.7300i
txsv =
1 1 1 1
txbeam =
3.2930 |
|
txang = [10 ; 0]; txbeam_ang = 0 |
|
txarray =
phased.ULA with properties:
Element: [1×1 phased.IsotropicAntennaElement] NumElements: 4 ElementSpacing: 0.0058 ArrayAxis: 'y' Taper: 1
txmipos =
0 0 0 0 -0.7500 -0.2500 0.2500 0.7500 0 0 0 0
txarraystv =
phased.SteeringVector with properties:
SensorArray: [1×1 phased.ULA] PropagationSpeed: 300000000 IncludeElementResponse: false NumPhaseShifterBits: 0
wt =
0.6835 + 0.7300i 0.9630 + 0.2694i 0.9630 - 0.2694i 0.6835 - 0.7300i
txsv =
1 1 1 1
txbeam =
3.2930 |
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',[]);
|
Following examples shows the pattern of an array antenna with different steering angles.
|
NoOfTxAntenna = 4 txang = [0 ; 0]; |
|
|
|
NoOfTxAntenna = 4 txang = [10 ; 0]; |
|
|
|
NoOfTxAntenna = 4 txang = [-30 ; 0]; |
|
|
|
NoOfTxAntenna = 8 txang = [0 ; 0]; |
|
|
|
NoOfTxAntenna = 8 txang = [-30 ; 0]; |
|
|
Following examples shows how the shape of an array antenna changes as the number of elements increases.
|
NoOfTxAntenna = 2 txang = [0 ; 0]; |
|
|
|
NoOfTxAntenna = 4 txang = [0 ; 0]; |
|
|
|
NoOfTxAntenna = 8 txang = [0 ; 0]; |
|
|
|
NoOfTxAntenna = 16 txang = [0 ; 0]; |
|
|
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')
|
|
NoOfTxAntenna = 2 |
|
|
|
NoOfTxAntenna = 4 |
|
|
|
NoOfTxAntenna = 8 |
|
|
|
NoOfTxAntenna = 16 |
|
|
Steering ULA Pattern in 3D
|
ULA_Basic_04.m |
|
c = 3e8; fc = 26e9; lambda = c/fc;
NoOfTxAntenna = 4;
txarray = phased.ULA('NumElements',NoOfTxAntenna,'ElementSpacing',lambda/2); steer_ang = [15;0]; stv = phased.SteeringVector('SensorArray',txarray); w = stv(fc,steer_ang);
pattern(txarray,fc,[-180:180],[-90:90],... 'PropagationSpeed',c,... 'CoordinateSystem','polar',... 'Type','powerdb',... 'Weights',w)
view(90,0);
|
|
steer_ang = [-15;0]; 'Type','powerdb' view(90,0); |
steer_ang = [0;0]; 'Type','powerdb' view(90,0); |
steer_ang = [15;0]; 'Type','powerdb' view(90,0); |
|
|
|
|
|
steer_ang = [30;0]; 'Type','powerdb' view(90,0); |
steer_ang = [45;0]; 'Type','powerdb' view(90,0); |
steer_ang = [60;0]; 'Type','powerdb' view(90,0); |
|
|
|
|
|
steer_ang = [-15;0]; 'Type','power' view(90,0); |
steer_ang = [0;0]; 'Type','power' view(90,0); |
steer_ang = [15;0]; 'Type','power' view(90,0); |
|
|
|
|
|
steer_ang = [30;0]; 'Type','power' view(90,0); |
steer_ang = [45;0]; 'Type','power' view(90,0); |
steer_ang = [60;0]; 'Type','power' view(90,0); |
|
|
|
|
|
steer_ang = [30;0]; 'Type','power' view(90,0); |
steer_ang = [45;0]; 'Type','power' view(120,0); |
steer_ang = [60;0]; 'Type','power' view(90,0); |
|
|
|
|
Steering ULA Pattern in 2D
|
ULA_Basic_05.m |
|
c = 3e8; fc = 26e9; lambda = c/fc;
NoOfTxAntenna = 4;
txarray = phased.ULA('NumElements',NoOfTxAntenna,'ElementSpacing',lambda/2); steer_ang = [-5;0]; stv = phased.SteeringVector('SensorArray',txarray); w = stv(fc,steer_ang);
subplot(1,2,1); pattern(txarray,fc,[-180:180],0,... 'PropagationSpeed',c,... 'CoordinateSystem','polar',... 'Type','powerdb',... 'Weights',w)
subplot(1,2,2); pattern(txarray,fc,[-180:180],0,... 'PropagationSpeed',c,... 'CoordinateSystem','rectangular',... 'Type','powerdb', ... 'Weights',w)
set(gcf, 'Position', [200, 200, 740, 350])
|
|
NoOfTxAntenna = 4; steer_ang = [-5;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [0;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [5;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [10;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [15;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [30;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [45;0]; 'Type','powerdB' |
|
|
|
NoOfTxAntenna = 4; steer_ang = [60;0]; 'Type','powerdB' |
|
|
































