MatLab Toolbox - Phase Array System                       Home : www.sharetechnote.com

 

 

 

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

 

 

NoOfTxAntenna = 4

txang = [0 ; 0];

 

 

 

NoOfTxAntenna = 4

txang = [10 ; 0];

 

 

 

NoOfTxAntenna = 4

txang = [-30 ; 0];

 

 

 

NoOfTxAntenna = 8

txang = [0 ; 0];

 

 

 

NoOfTxAntenna = 4

txang = [-30 ; 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

 

 

 

 

Disclaimer ! :

 

This page is only to show you the overall logics and visualization for various Phase Array Antenna System. I haven't investigated much about verifying about the accuracy.

If you think the code is not so efficient, it is 100% my fault. I haven't made any effort for effiecient code. I just tried to create code as simple as possible for the readers. As you know, easy-to-read code is not always efficient for a specific chipset.

If you find any mistake in terms of accuracy, it is also very highly likely be my fault. Not the problem of Matlab tool box itself.

Any comment and corrections if you find any mistake will be welcome and appreciated.