Main Content

Phased Array Gallery

This example shows how to model and visualize a variety of antenna array geometries with Phased Array System Toolbox™. These geometries can also be used to model other kind of arrays, such hydrophone arrays and microphone arrays. You can view code for each plot, and use it in your own project.

Linear Arrays

线性天线阵列可以在元件之间具有均匀或不均匀的间隔。该最常见的线性天线阵列是均匀的线性阵列(ULA)。

N = 20;% Number of elementsD = 0.5;% Element spacing (m)ula = phased.ULA(N,D); viewArray(ula,'Title','Uniform Linear Array (ULA)') set(gca,'CameraViewAngle',4.4);

A Minimum Redundancy Linear Array (MRLA) is an example of nonuniformly spaced linear array. The MRLA minimizes the number of element pairs that have the same spatial correlation lag. It is possible to design a 4-element array whose aperture is equivalent to 7-element ULA.

N = 4;% Number of elementspos = zeros(3,N); pos(2,:) = [-1.5 -1 0.5 1.5];% Aperture equivalent to 7-element ULAmrla = phased.ConformalArray('ElementPosition',pos,...'ElementNormal',zeros(2,N)); viewArray(mrla,'Title','Minimum Redundancy Linear Array (MRLA)') set(gca,'CameraViewAngle',4.85);

Circular Arrays

Circular antenna arrays can also have uniform or nonuniform spacing between elements. Next is an example of a Uniform Circular Array (UCA).

N = 24;% Number of elementsR = 1;% Radius (m)uca = phased.UCA(N,R); viewArray(uca,'ShowNormals',true,'Title','Uniform Circular Array (UCA)') view(0,90)

Multiple circular antenna arrays with the same number of elements and different radii form a concentric circular array.

N = 16;% Number of elements on each ringR = [1 1.5 2];% Radii (m)azang = (0:N-1)*360/N-180; pos = [zeros(1,N);cosd(azang);sind(azang)]; elNormal = zeros(2,N); concentricCircularArray = phased.ConformalArray(...'ElementPosition',[R(1)* POS R(2)* POS R(3)* POS],...'ElementNormal',[Elnormal Elnormal ElnorMal]);ViewArray(ConcentricCirculararray,'Title','Concentric Circular Array');

Planar Arrays with Rectangular Grid

Planar antenna arrays can have a uniform grid (or lattice) and different boundary shapes. Next is an example of a Uniform Rectangular Array (URA) with a rectangular grid and rectangular boundary.

M = 18;% Number of elements on each rowN = 16;% Number of elements on each columndy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)ura = phased.URA([N M],[dz dy]); viewArray(ura,'Title','Uniform Rectangular Array (URA)');

You can also model a planar antenna array with a circular boundary. The following code starts with a URA and removes elements outside a circle.

N = 20;% Number of elements on each row/column of rectangular arraydy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)R = 4.5;% Radius (m)Refarray = phased.ura(n,[dy,dz]);POS = GetEmementPosition(Refarray);Elemtoremove = sum(pos。^ 2)> r ^ 2;POS(:,ElemtoreMove)= [];% Exclude elements outside circlecircularPlanarArray = phased.ConformalArray('ElementPosition',pos,...'ElementNormal',零(2,尺寸(POS,2)));ViewArray(CircularPlanarArray,'Title','Circular Planar Array');

Next is an example of a planar antenna array with an elliptical boundary.

N = 20;% Number of elements on each row/column of rectangular arraydy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)Ry = 4.5;% Major radius (m)Rz = 2.8;%次要半径(m)Refarray = phased.ura(n,[dy,dz]);POS = GetEmementPosition(Refarray);Elemtoremove =(POS(2,:)/ RY)。^ 2+(POS(3,:)/ RZ)。^ 2> 1;POS(:,ElemtoreMove)= [];% Exclude elements outside ellipseellipticalPlanarArray = phased.ConformalArray('ElementPosition',pos,...'ElementNormal',零(2,尺寸(POS,2)));viewArray(ellipticalPlanarArray,'Title','Elliptical Planar Array');

The next example is a hexagonal array with a rectangular grid.

Nmin = 7;% Number of elements on bottom rowNmax = 19;% Number of elements on widest rowdy = 0.5;% Row spacingdz = 0.5;% Column spacingrows = [Nmin:2:Nmax Nmax-2:-2:Nmin]; N = sum(rows);% Total number of elementsstop = cumsum(rows); start = stop-rows+1; pos = zeros(3,N); count = 0;form = Nmin-Nmax:2:Nmax-Nmin count = count+1; idx = start(count):stop(count); pos(2,idx) = (-(rows(count)-1)/2:(rows(count)-1)/2)*dy; pos(3,idx) = m/2*dz;endhexagonalPlanarArray = phased.ConformalArray('ElementPosition',pos,...'ElementNormal',zeros(2,N)); viewArray(hexagonalPlanarArray,...'Title','Hexagonal Planar Array with Rectangular Grid');

平面阵列与三角形网格

Triangular grids provide an efficient spatial sampling and are widely used in practice. Here again, different boundary geometries can be applied. First is a rectangular array with a triangular lattice.

M = 18;% Number of elements on each rowN = 16;% Number of elements on each columndy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)rectArrayTriGrid = phased.URA([N M],[dz dy],'Lattice','Triangular');viewArray(rectArrayTriGrid,...'Title','Rectangular Array with Triangular Grid');

Next is a circular planar antenna array with a triangular lattice.

N = 18;% Number of elements on each row/column of rectangular arraydy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)R = 4.5;% Radius (m)Refarray = phased.ura(n,[dy,dz],'Lattice','Triangular');POS = GetEmementPosition(Refarray);Elemtoremove = sum(pos。^ 2)> r ^ 2;POS(:,ElemtoreMove)= [];% Exclude elements outside circlecircularPlanarArrayTriGrid = phased.ConformalArray(...'ElementPosition',pos,'ElementNormal',零(2,尺寸(POS,2)));viewArray(circularPlanarArrayTriGrid,...'Title','Circular Planar Array with Triangular Grid');

接下来是一个椭圆planar antenna array with a triangular lattice.

N = 18;% Number of elements on each row/column of rectangular arraydy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)Ry = 4.5;% Major radius (m)Rz = 2.8;%次要半径(m)Refarray = phased.ura(n,[dy,dz],'Lattice','Triangular');POS = GetEmementPosition(Refarray);Elemtoremove =(POS(2,:)/ RY)。^ 2+(POS(3,:)/ RZ)。^ 2> 1;POS(:,ElemtoreMove)= [];% Exclude elements outside ellipseellipticalPlanarArrayTriGrid =...phased.ConformalArray('ElementPosition',pos,...'ElementNormal',零(2,尺寸(POS,2)));viewArray(ellipticalPlanarArrayTriGrid,...'Title','Elliptical Planar Array with Triangular Grid');

Next is an example of a Uniform Hexagonal Array (UHA).

Nmin = 9;% Number of elements on bottom rownmax = 17;% Number of elements on mid rowdy = 0.5;% Row spacingdz = 0.5*sin(pi/3);% Column spacingrows = [Nmin:Nmax Nmax-1:-1:Nmin]; N = sum(rows);% Total number of elementsstop = cumsum(rows); start = stop-rows+1; pos = zeros(3,N); count = 0;form = nmin-nmax:nmax-nmin count = count + 1;idx = start(count):停止(计数);POS(2,IDX)=( - (ROWS(COUNT)-1)/ 2 :(行(计数)-1)/ 2)* dy;POS(3,IDX)= M * DZ;enduha = phased.ConformalArray('ElementPosition',pos,...'ElementNormal',zeros(2,N)); viewArray(uha,'Title','Uniform Hexagonal Array (UHA)');

Thinned Arrays

You can also model planar antenna arrays with nonuniform grids. Next is an example of a thinned antenna array.

M = 19;% Number of elements on each rowN = 17;% Number of elements on each columndy = 0.5;% Spacing between elements on each row (m)dz = 0.5;% Spacing between elements on each column (m)refArray = phased.URA([N M],[dz dy]); pos = getElementPosition(refArray); elemToRemove = [3:11:M*(N-1)/2 M*N-3:-11:(N+1)/2]; pos(:,elemToRemove) = []; thinnedURA = phased.ConformalArray('ElementPosition',pos,...'ElementNormal',零(2,尺寸(POS,2)));ViewArray(Thinnedura,'Title','Thinned Array');

Hemispherical Conformal Arrays

You can also model nonplanar arrays. In many applications, sensors must conform to the shape of the curved surface they are mounted on. Next is an example of an antenna array whose elements are uniformly distributed on a hemisphere.

r = 2;% Radius (m)az = -90:10:90;% Azimuth anglesel = -80:10:80;% Elevation angles (excluding poles)[az_grid, el_grid] = meshgrid(az,el); poles = [0 0; -90 90];%添加南极和北极nDir = [poles [az_grid(:) el_grid(:)]'];% Element normal directionsN = size(nDir,2);% Number of elements[x, y, z] = sph2cart(degtorad(nDir(1,:)), degtorad(nDir(2,:)),R*ones(1,N)); hemisphericalConformalArray = phased.ConformalArray(...'ElementPosition',[x; y; z],'ElementNormal',nDir); viewArray(hemisphericalConformalArray,...'Title','Hemispherical Conformal Array');查看(90,0)

Subarrays

You can model and visualize subarrays. Next is an example of contiguous subarrays.

replicatedURA = phased.ReplicatedSubarray('Subarray',phased.URA(5),...'Layout','Rectangular',...'GridSize',[3 3],'GridSpacing','Auto');viewArray(replicatedURA,'Title','3x3 Subarrays Each Having 5x5 Elements');

You can lay out subarrays on a nonuniform grid. The next example models the failure of a T/R module for one subarray.

Ns = 6;% Number of subarraysposc = zeros(3,Ns); posc(2,:) = -5:2.5:7.5;% Subarray phase centersposc(:,3) = [];%取出第3个子阵段以模拟T / R失败defectiveSubarray = phased.ReplicatedSubarray(...'Subarray',phased.URA([25 5]),...'Layout','Custom',...'SubarrayPosition',posc,...'SubarrayNormal',zeros(2,Ns-1)); viewArray(defectiveSubarray,'Title','Defective Subarray');查看(90,0)

Subarrays can be interlaced and overlapped to mitigate grating lobes.

N = 40;% Number of elementsNs = 8;% Number of subarraysSel = Zeros(ns,n);nsec = n / ns;form = 1:Nsifm==1 sel(m,(m-1)*Nsec+1:m*Nsec+1) = 1;elseifm==Ns sel(m,(m-1)*Nsec:m*Nsec) = 1;elsesel(m,(m-1)*Nsec:m*Nsec+1) = 1;endendoverlappedSubarray = phased.PartitionedArray('Array',phased.ULA(N),...'SubarraySelection', sel); viewArray(overlappedSubarray,'Title','Overlapped Subarrays');set(gca,'CameraViewAngle',4.65);

在某些空间约束应用程序中,例如在卫星上,多个天线阵列必须共享相同的空间。元素组是交错的,隔行扫描或穿插。下一个示例模型交错的非重叠子阵列。

N = 20; idx = reshape(randperm(N*N),N,N); sel = zeros(N,N*N);fori = 1: N,选取(我idx(我,:))= 1;endinterleavedArray = phased.PartitionedArray('Array',phased.URA(N),...'SubarraySelection',sel);ViewArray(InterleavedArray,'Title','Interleaved Arrays');

Another type of nonplanar antenna array is an array with multiple planar faces. The next example shows uniform hexagonal arrays arranged as subarrays on a sphere.

R = 9;% Radius (m)az = unigrid(-180,60,180,'[)');% Azimuth anglesel = unigrid(-30,60,30);% Elevation angles (excluding poles)[az_grid, el_grid] = meshgrid(az,el); poles = [0 0; -90 90];%添加南极和北极nDir = [poles [az_grid(:) el_grid(:)]'];% Subarray normal directionsN = size(nDir,2);% Number of subarrays[x, y, z] = sph2cart(degtorad(nDir(1,:)), degtorad(nDir(2,:)),R*ones(1,N)); sphericalHexagonalSubarray = phased.ReplicatedSubarray('Subarray',uha,...'Layout','Custom',...'SubarrayPosition',[x; y; z],...'SubarrayNormal',nDir); viewArray(sphericalHexagonalSubarray,...'Title','Hexagonal Subarrays on a Sphere');view(30,0)

You can also view the array from a different angle and interactively rotate it in 3-D.

view(0,90) rotate3d