摘要:本次推文將介紹如何利用MATLAB的Sensor Array Analyzer進行天線陣列的方向圖綜合。
1. 陣列方向圖綜合理論
對于均勻平面陣列而言,其陣因子公式可以寫成
當陣列是三角網格布置或者圓環陣時,《ANTENNA THEORY ANALYSIS AND DESIGN》等相關教程也是有公式可參考的。不過對于任意孔徑下排布,我們就需要回歸到最通用的方向圖綜合公式。即通過已知的每個單元的位置、激勵幅度和相位、對
進行累加來綜合陣因子(點源模型)。
對于上述情況,就需要借助編程工具進行方向圖綜合的可視化,例如工科生們最常用的MATLAB或者Python。
2. Sensor Array Analyzer
MATLAB 2014b中開始新增支持的Sensor Array Analyzer (MATLAB 傳感器陣列分析器),這個工具箱提供用于分析和處理傳感器陣列數據的綜合工具和功能,適用于信號處理、通信、雷達和聲納等領域使用傳感器陣列的研究人員和工程師。該工具箱還提供用于顯示和分析陣列數據的可視化工具并支持傳感器陣列的設計和仿真。功能范圍從 1-D 到 3-D 天線、聲納換能器和麥克風陣列等,并且可以包含子陣列。指定陣列和傳感器參數后,應用程序會顯示基本性能特征,例如陣列方向性和陣列尺寸。
支持的陣列類型如下所示:
對于天線陣列設計而言,我們可以通過遵從下面步驟來實現搭積木式的陣列方向圖綜合:選擇陣列類型??配置單元數/單元間隔/陣列法向方向/陣列的錐削/工作頻段等。然后就可以點擊3D Pattern/2D Pattern按鈕來查看天線方向圖。
下面以一個URA為例進行簡單的使用示范:
①Size:輸入一個一行2列的向量,例如[4,4];
②Element Spacing:輸入單元間距,支持2種格式,例如[10,12](單位m),或者[0.5,0.6](單位λ);
③Lattice:支持Rectangular(矩形網格布陣)和Triangular(三角網格布陣);
④Array Normal:陣列的法向,例如x,y,z;
⑤Taper:支持Custom自定義類型和行、列分別類型的幅度錐削激勵;
⑥Custom Taper:當⑤中選擇Custom類型時,可自定義各單元的激勵系數。如果陣列的Size是4×4,則可輸入一個4×4的矩陣(可以是復數形式)。
以上向量或者矩陣均可以從workspace里載入
綜合的方向圖結果如下所示:
除了簡單的陣列綜合外,還有子陣綜合,單元方向圖選取以及波束掃描等功能,大家可以根據自己的需求來調用!
3. 代碼封裝設計
通過Export按鈕可以Generate Matlab script,通過觀察代碼來學習如何將上面的UI操作轉換為代碼的,從而將其封裝起來方便使用。
這里給大家一個封裝的MATLAB Demo
function radiation=Cal_RecArray(ArrSize,Spacing,Taper)
% ArrSize=[8,8];Spacing=[0.5,0.5];Taper=1;
% w = taylorwin(16,8,-20);w=w/max(w);Taper=w*w.';
% Create a uniform rectangular array
Array = phased.URA('Size',ArrSize,...
'Lattice','Rectangular','ArrayNormal','z');
% The multiplication factor for lambda units to meter conversion Array.ElementSpacing = Spacing;
Array.Taper = Taper;
% Create an isotropic antenna element
Elem = phased.IsotropicAntennaElement;
Elem.FrequencyRange = [0 300000000];
Array.Element = Elem;
% Assign Frequencies and Propagation Speed Frequency = 300000000;
PropagationSpeed = 300000000;
% Plot Array Geometry
figure;
viewArray(Array,'ShowNormal',false,...
'ShowTaper',false,'ShowIndex','None',...
'ShowLocalCoordinates',true,'ShowAnnotation',false,...
'Orientation',[45;45;45]);
% Calculate Steering Weights
Freq3D = 300000000;
% Find the weights
w = ones(getNumElements(Array), length(Frequency));
% Plot 3d graph
plotType = 'Directivity';
radiation=pattern(Array, Freq3D , 'PropagationSpeed', PropagationSpeed,...
'weights', w(:,1),...
'ShowArray',false,'ShowLocalCoordinates',true,...
'Type', plotType);
end
簡單的調用下即可得到3D方向圖數據:
w = taylorwin(10,8,-20);w=w/max(w);Taper=w*w.';
pattern=Cal_RecArray([10,10],[0.5,0.5],Taper);
4. 進階功能
除了常規的1D線陣,矩形、圓形等陣列結構外,還可以進行Arbitrary設置,我們只需要傳入單元的坐標位置和單元的法向角度 (對于平面陣列而言,所有單元的法向角度相同),以及單元的幅度錐削即可。
該工具箱內置的子陣分析和自定義單元方向圖功能使得復雜的陣列綜合更加便利化。