メインコンテンツ

フェーズド アレイ ギャラリー

この例では、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);

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

最小冗長性線形アレイ (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);

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

円形アレイ

円形アンテナ アレイにも、素子間の間隔が等間隔のものと不等間隔のものがあります。次は、等間隔円形アレイ (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)

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 9 objects of type scatter, quiver, line, text.

素子数が同じで半径が異なる複数の円形アンテナ アレイを組み合わせることで、同心円状の円形アレイが形成されます。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

四角形グリッドによる平面アレイ

平面アンテナ アレイは等間隔なグリッド (または格子) と異なる境界形状をもつことができます。次は、矩形のグリッドと矩形の境界をもつ等間隔矩形アレイ (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)');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

円形の境界をもつ平面アンテナ アレイをモデル化することもできます。次のコードでは、まず 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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

次は、楕円形の境界をもつ平面アンテナ アレイの例です。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

次の例は、四角形のグリッドを使用した六角形アレイです。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

三角形グリッドによる平面アレイ

三角形グリッドは効率的な空間サンプリングを提供するため、実際に広く使用されています。ここでも、さまざまな境界ジオメトリを適用できます。最初は三角格子を使用した矩形アレイです。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

次は、三角格子を使用した円形平面アンテナ アレイです。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

次は三角格子を使用した楕円平面アンテナ アレイです。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

次は、等間隔六角形アレイ (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)');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

間引きアレイ

不等間隔グリッドを使用して平面アンテナ アレイをモデル化することもできます。次は、間引きされたアンテナ アレイの例です。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

半球形コンフォーマル アレイ

非平面アレイもモデル化できます。多くの用途において、センサーは取り付けられる曲面の形状に合わせて配置されなければなりません。次は、素子が半球上に等間隔に分散されたアンテナ アレイの例です。

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)

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 7 objects of type scatter, line, text.

サブアレイ

サブアレイをモデル化して可視化できます。次は連続したサブアレイの例です。

replicatedURA = phased.ReplicatedSubarray('Subarray',phased.URA(5),...
                               'Layout','Rectangular',...
                               'GridSize',[3 3],'GridSpacing','Auto');

viewArray(replicatedURA,'Title','3x3 Subarrays Each Having 5x5 Elements');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis--> contains 7 objects of type scatter, line, text.

サブアレイを不等間隔グリッド上にレイアウトできます。次の例では、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)

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis--> contains 7 objects of type scatter, line, text.

サブアレイをインターレースしたりオーバーラップさせたりすることで、グレーティング ローブを軽減できます。

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

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis--> contains 8 objects of type scatter, line, text. This object represents Overlap.

衛星など、空間的制約のある特定の用途では、複数のアンテナ アレイが同じスペースを共有しなければなりません。素子のグループは、インターリーブ、インターレース、またはインタースパースした状態で配置されます。次の例では、インターリーブされたオーバーラップしないサブアレイをモデル化します。

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');

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis--> contains 7 objects of type scatter, line, text.

非平面アンテナ アレイの別のタイプは、複数の平面をもつアレイです。次の例は、球面上にサブアレイとして配置された等間隔六角形アレイを示しています。

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)

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis--> contains 7 objects of type scatter, line, text.

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

view(0,90)
rotate3d on

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis--> contains 7 objects of type scatter, line, text.