Generate approximate antenna field pattern usign Beamwidth and FBR

The inputs to the process are
* the antenna beam width in the horizontal and vertical planes
* the front-back ratio
Resulting in two Matlab programs:
* a program to estimate the ADF file from the simpler data
* a program to plot the horizontal and vertical fields from an ADF file.

Answers (1)

Here is my attempt to plot the horizontal and vertical fields from an ADF file:
  • The function “estimateADF takes the horizontal and vertical beam widths along with the front-back ratio as inputs. It creates a structure with these parameters and generates field patterns using a Gaussian model. The data is then saved as an ADF file.
function estimateADF(horizontalBeamWidth, verticalBeamWidth, frontBackRatio, outputFileName)
% Create a simple ADF structure
adfData = struct();
adfData.horizontalBeamWidth = horizontalBeamWidth;
adfData.verticalBeamWidth = verticalBeamWidth;
adfData.frontBackRatio = frontBackRatio;
% Estimate pattern data (simple Gaussian model)
adfData.pattern = createPattern(horizontalBeamWidth, verticalBeamWidth, frontBackRatio);
% Save the ADF data to a file
save(outputFileName, '-struct', 'adfData');
fprintf('ADF file estimated and saved as %s\n', outputFileName);
end
function pattern = createPattern(horizontalBW, verticalBW, fbr)
% Generate pattern data using a Gaussian model
theta = linspace(0, 360, 360); % 0 to 360 degrees
phi = linspace(0, 180, 180); % 0 to 180 degrees
% Gaussian pattern for horizontal and vertical planes
pattern.horizontal = exp(-((theta - 180).^2) / (2 * (horizontalBW / 2)^2));
pattern.vertical = exp(-((phi - 90).^2) / (2 * (verticalBW / 2)^2));
% Apply front-back ratio as a simple scaling factor
pattern.horizontal = pattern.horizontal * (1 / (1 + fbr));
pattern.vertical = pattern.vertical * (1 / (1 + fbr));
end
  • The function plotADF reads the ADF file and visualizes the horizontal and vertical field patterns.
function plotADF(adfFileName)
% Load the ADF data
adfData = load(adfFileName);
% Plot horizontal pattern
figure;
subplot(2, 1, 1);
plot(1:360, adfData.pattern.horizontal);
title('Horizontal Field Pattern');
xlabel('Degrees');
ylabel('Magnitude');
grid on;
% Plot vertical pattern
subplot(2, 1, 2);
plot(1:180, adfData.pattern.vertical);
title('Vertical Field Pattern');
xlabel('Degrees');
ylabel('Magnitude');
grid on;
end
  • Type the below command in the MATLAB Command Window to run the program:
estimateADF(60, 30, 20, 'antenna_adf.mat');%60: Horizontal beam width in degrees. %30: Vertical beam width in degrees. %20: Front-back ratio
ADF file estimated and saved as antenna_adf.mat
plotADF('antenna_adf.mat');
Output above shows the Gaussian-based antenna field patterns, with the horizontal field centered at 180° (0°–360°) and the vertical field at 90° (0°–180°). The symmetry and scaling reflect the beam widths and front-back ratio.
For reference, below are the links for few of the functions used in the program:
Hope it helps!

Categories

Find more on Design, Analysis, Benchmarking, and Verification in Help Center and File Exchange

Products

Release

R2016b

Asked:

on 26 May 2019

Answered:

AR
on 14 Feb 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!