フェーズド アレイ ギャラリー
この例では、Phased Array System Toolbox™ を使用してさまざまなアンテナ アレイ ジオメトリをモデル化および可視化する方法を示します。これらのジオメトリは、ハイドロフォン アレイやマイク アレイなどの他の種類のアレイをモデル化するためにも使用できます。各プロットのコードを表示し、独自のプロジェクトで使用できます。
線形アレイ
直線アンテナ アレイには、素子間の間隔が等間隔のものと不等間隔のものがあります。以下の最も一般的な直線アンテナ アレイは、等間隔直線アレイ (ULA) です。
N = 20; % Number of elements D = 0.5; % Element spacing (m) ula = phased.ULA(N,D); viewArray(ula,'Title','Uniform Linear Array (ULA)') set(gca,'CameraViewAngle',4.4);

最小冗長性線形アレイ (MRLA) は、不等間隔の線形アレイの例です。MRLA は、同じ空間相関ラグをもつ素子ペアの数を最小化します。7 素子 ULA と同等の開口部をもつ 4 素子アレイを設計することが可能です。
N = 4; % Number of elements pos = zeros(3,N); pos(2,:) = [-1.5 -1 0.5 1.5]; % Aperture equivalent to 7-element ULA mrla = phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',zeros(2,N)); viewArray(mrla,'Title','Minimum Redundancy Linear Array (MRLA)') set(gca,'CameraViewAngle',4.85);

円形アレイ
円形アンテナ アレイにも、素子間の間隔が等間隔のものと不等間隔のものがあります。次は、等間隔円形アレイ (UCA) の例です。
N = 24; % Number of elements R = 1; % Radius (m) uca = phased.UCA(N,R); viewArray(uca,'ShowNormals',true,'Title','Uniform Circular Array (UCA)') view(0,90)

素子数が同じで半径が異なる複数の円形アンテナ アレイを組み合わせることで、同心円状の円形アレイが形成されます。
N = 16; % Number of elements on each ring R = [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');

四角形グリッドによる平面アレイ
平面アンテナ アレイは等間隔なグリッド (または格子) と異なる境界形状をもつことができます。次は、矩形のグリッドと矩形の境界をもつ等間隔矩形アレイ (URA) の例です。
M = 18; % Number of elements on each row N = 16; % Number of elements on each column dy = 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)');

円形の境界をもつ平面アンテナ アレイをモデル化することもできます。次のコードでは、まず URA を作成し、円の外側の素子を削除しています。
N = 20; % Number of elements on each row/column of rectangular array dy = 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 = getElementPosition(refArray); elemToRemove = sum(pos.^2)>R^2; pos(:,elemToRemove) = []; % Exclude elements outside circle circularPlanarArray = phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',zeros(2,size(pos,2))); viewArray(circularPlanarArray,'Title','Circular Planar Array');

次は、楕円形の境界をもつ平面アンテナ アレイの例です。
N = 20; % Number of elements on each row/column of rectangular array dy = 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; % Minor radius (m) refArray = phased.URA(N,[dy,dz]); pos = getElementPosition(refArray); elemToRemove = (pos(2,:)/Ry).^2+(pos(3,:)/Rz).^2>1; pos(:,elemToRemove) = []; % Exclude elements outside ellipse ellipticalPlanarArray = phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',zeros(2,size(pos,2))); viewArray(ellipticalPlanarArray,'Title','Elliptical Planar Array');

次の例は、四角形のグリッドを使用した六角形アレイです。
Nmin = 7; % Number of elements on bottom row Nmax = 19; % Number of elements on widest row dy = 0.5; % Row spacing dz = 0.5; % Column spacing rows = [Nmin:2:Nmax Nmax-2:-2:Nmin]; N = sum(rows); % Total number of elements stop = cumsum(rows); start = stop-rows+1; pos = zeros(3,N); count = 0; for m = 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; end hexagonalPlanarArray = phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',zeros(2,N)); viewArray(hexagonalPlanarArray,... 'Title','Hexagonal Planar Array with Rectangular Grid');

三角形グリッドによる平面アレイ
三角形グリッドは効率的な空間サンプリングを提供するため、実際に広く使用されています。ここでも、さまざまな境界ジオメトリを適用できます。最初は三角格子を使用した矩形アレイです。
M = 18; % Number of elements on each row N = 16; % Number of elements on each column dy = 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');

次は、三角格子を使用した円形平面アンテナ アレイです。
N = 18; % Number of elements on each row/column of rectangular array dy = 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 = getElementPosition(refArray); elemToRemove = sum(pos.^2)>R^2; pos(:,elemToRemove) = []; % Exclude elements outside circle circularPlanarArrayTriGrid = phased.ConformalArray(... 'ElementPosition',pos,'ElementNormal',zeros(2,size(pos,2))); viewArray(circularPlanarArrayTriGrid,... 'Title','Circular Planar Array with Triangular Grid');

次は三角格子を使用した楕円平面アンテナ アレイです。
N = 18; % Number of elements on each row/column of rectangular array dy = 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; % Minor radius (m) refArray = phased.URA(N,[dy,dz],'Lattice','Triangular'); pos = getElementPosition(refArray); elemToRemove = (pos(2,:)/Ry).^2+(pos(3,:)/Rz).^2>1; pos(:,elemToRemove) = []; % Exclude elements outside ellipse ellipticalPlanarArrayTriGrid = ... phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',zeros(2,size(pos,2))); viewArray(ellipticalPlanarArrayTriGrid,... 'Title','Elliptical Planar Array with Triangular Grid');

次は、等間隔六角形アレイ (UHA) の例です。
Nmin = 9; % Number of elements on bottom row Nmax = 17; % Number of elements on mid row dy = 0.5; % Row spacing dz = 0.5*sin(pi/3); % Column spacing rows = [Nmin:Nmax Nmax-1:-1:Nmin]; N = sum(rows); % Total number of elements stop = cumsum(rows); start = stop-rows+1; pos = zeros(3,N); count = 0; for m = Nmin-Nmax: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*dz; end uha = phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',zeros(2,N)); viewArray(uha,'Title','Uniform Hexagonal Array (UHA)');

間引きアレイ
不等間隔グリッドを使用して平面アンテナ アレイをモデル化することもできます。次は、間引きされたアンテナ アレイの例です。
M = 19; % Number of elements on each row N = 17; % Number of elements on each column dy = 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',zeros(2,size(pos,2))); viewArray(thinnedURA,'Title','Thinned Array');

半球形コンフォーマル アレイ
非平面アレイもモデル化できます。多くの用途において、センサーは取り付けられる曲面の形状に合わせて配置されなければなりません。次は、素子が半球上に等間隔に分散されたアンテナ アレイの例です。
R = 2; % Radius (m) az = -90:10:90; % Azimuth angles el = -80:10:80; % Elevation angles (excluding poles) [az_grid, el_grid] = meshgrid(az,el); poles = [0 0; -90 90]; % Add south and north poles nDir = [poles [az_grid(:) el_grid(:)]']; % Element normal directions N = 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'); view(90,0)

サブアレイ
サブアレイをモデル化して可視化できます。次は連続したサブアレイの例です。
replicatedURA = phased.ReplicatedSubarray('Subarray',phased.URA(5),... 'Layout','Rectangular',... 'GridSize',[3 3],'GridSpacing','Auto'); viewArray(replicatedURA,'Title','3x3 Subarrays Each Having 5x5 Elements');

サブアレイを不等間隔グリッド上にレイアウトできます。次の例では、1 つのサブアレイの T/R モジュールの故障をモデル化します。
Ns = 6; % Number of subarrays posc = zeros(3,Ns); posc(2,:) = -5:2.5:7.5; % Subarray phase centers posc(:,3) = []; % Take out 3rd subarray to model T/R failure defectiveSubarray = phased.ReplicatedSubarray(... 'Subarray',phased.URA([25 5]),... 'Layout','Custom',... 'SubarrayPosition',posc, ... 'SubarrayNormal',zeros(2,Ns-1)); viewArray(defectiveSubarray,'Title','Defective Subarray'); view(90,0)

サブアレイをインターレースしたりオーバーラップさせたりすることで、グレーティング ローブを軽減できます。
N = 40; % Number of elements Ns = 8; % Number of subarrays sel = zeros(Ns,N); Nsec = N/Ns; for m = 1:Ns if m==1 sel(m,(m-1)*Nsec+1:m*Nsec+1) = 1; elseif m==Ns sel(m,(m-1)*Nsec:m*Nsec) = 1; else sel(m,(m-1)*Nsec:m*Nsec+1) = 1; end end overlappedSubarray = 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); for i =1:N, sel(i,idx(i,:)) = 1; end interleavedArray = phased.PartitionedArray('Array',phased.URA(N),... 'SubarraySelection',sel); viewArray(interleavedArray,'Title','Interleaved Arrays');

非平面アンテナ アレイの別のタイプは、複数の平面をもつアレイです。次の例は、球面上にサブアレイとして配置された等間隔六角形アレイを示しています。
R = 9; % Radius (m) az = unigrid(-180,60,180,'[)'); % Azimuth angles el = unigrid(-30,60,30); % Elevation angles (excluding poles) [az_grid, el_grid] = meshgrid(az,el); poles = [0 0; -90 90]; % Add south and north poles nDir = [poles [az_grid(:) el_grid(:)]']; % Subarray normal directions N = 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)

アレイを別の角度から表示したり、対話的に 3 次元で回転させたりすることもできます。
view(0,90)
rotate3d on