Initial ARSS. Need to improve and add functions.

This commit is contained in:
2026-03-02 14:48:21 +09:00
commit 775668afdb
20 changed files with 1610 additions and 0 deletions
@@ -0,0 +1,68 @@
function PatternArray = build_antenna_patterns(NumAnt, PatternType, MaxGain, AzSquintStep, AzBeamwidth, ElBeamwidth, FileList)
% build_antenna_patterns: .
%
% []
% - FileList (): Cell Array.
% : {'tx1.mat', 'tx2.mat', ''} ( )
% ( )
az_angles_default = -90:1:90;
el_angles_default = -90:1:90;
% nargin을 FileList가
if nargin < 7
FileList = {};
end
for n = 1:NumAnt
PatternArray(n).Type = PatternType;
% -------------------------------------------------------------
% Case A: , (Load)
% -------------------------------------------------------------
if length(FileList) >= n && ~isempty(FileList{n}) && isfile(FileList{n})
filePath = FileList{n};
loadedData = load(filePath); % .mat
% (az_angles, el_angles ) .
PatternArray(n).az_angles = loadedData.az_angles;
PatternArray(n).el_angles = loadedData.el_angles;
if strcmpi(PatternType, '2D')
PatternArray(n).gain_dBi = loadedData.gain_dBi;
elseif strcmpi(PatternType, '1D')
PatternArray(n).max_gain_dBi = loadedData.max_gain_dBi;
PatternArray(n).gain_az_dBi = loadedData.gain_az_dBi;
PatternArray(n).gain_el_dBi = loadedData.gain_el_dBi;
end
%
continue; %
end
% -------------------------------------------------------------
% Case B: ( )
% -------------------------------------------------------------
PatternArray(n).az_angles = az_angles_default;
PatternArray(n).el_angles = el_angles_default;
% (Squint Angle)
% (3): (1-2)*5 = -5, (2-2)*5 = 0, (3-2)*5 = +5
squint_az = (n - (NumAnt + 1)/2) * AzSquintStep;
if strcmpi(PatternType, '2D')
[AZ, EL] = meshgrid(PatternArray(n).az_angles, PatternArray(n).el_angles);
PatternArray(n).gain_dBi = MaxGain - 3*((AZ - squint_az)/AzBeamwidth).^2 - 3*(EL/ElBeamwidth).^2;
PatternArray(n).gain_dBi(PatternArray(n).gain_dBi < -20) = -20;
elseif strcmpi(PatternType, '1D')
PatternArray(n).max_gain_dBi = MaxGain;
PatternArray(n).gain_az_dBi = MaxGain - 3*((PatternArray(n).az_angles - squint_az)/AzBeamwidth).^2;
PatternArray(n).gain_az_dBi(PatternArray(n).gain_az_dBi < -20) = -20;
PatternArray(n).gain_el_dBi = MaxGain - 3*(PatternArray(n).el_angles/ElBeamwidth).^2;
PatternArray(n).gain_el_dBi(PatternArray(n).gain_el_dBi < -20) = -20;
end
end
end