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

 

 

 

 

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

 

 

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'