Change far field radius?

4 次查看(过去 30 天)
Alex Laraway
Alex Laraway 2022-9-23
回答: AR 2025-6-20
I have a large antenna array, where the theoretical far field needs to be ~200λ away.
I saw in the tutorials that the far-field points for an element are computed at a radius of 100λ. Does this also apply to an array? Is there any way to change this?

回答(1 个)

AR
AR 2025-6-20
The 100λ default typically applies to the “pattern” function in MATLAB as per the documentation given below:
This function evaluates and visualizes far-field radiation patterns for both single antenna elements and arrays. The default radius is used internally to calculate the spatial field distribution when plotting the radiation pattern in Cartesian coordinates. However, it assumes the observation point is in the far-field region.
For large arrays where the actual far-field boundary is beyond 100λ (e.g., ~200λ), using the 100λ default will not fully satisfy far-field criteria, especially for precision gain evaluations.
As per my knowledge, we cannot directly change this radius to 200λ as “pattern” function for arrays does not have a radius property. However, you can achieve this manually in the following way:
  • Use “phased.ArrayResponse” to compute angular (far-field) response, which assumes far-field conditions regardless of radius.
  • If needed, scale the field strength with 1/R to simulate the magnitude at a specific radius like 200λ.
Here is an example code:
% Frequency and physical constants
fc = 3e9; % Frequency (Hz)
c = 3e8; % Speed of light (m/s)
lambda = c / fc; % Wavelength (m)
radius = 200 * lambda; % Observation distance (200λ)
% Define ULA
N = 16;
d = lambda / 2;
array = phased.ULA('NumElements', N, 'ElementSpacing', d);
% Define Array Response object
resp = phased.ArrayResponse( ...
'SensorArray', array, ...
'PropagationSpeed', c, ...
'WeightsInputPort', false ...
);
% Define angles: azimuth sweep at fixed elevation = 0°
az = -180:180;
el = zeros(size(az));
angles = [az; el];
% Evaluate array response
AF = resp(fc, angles); % Array factor at far-field
% Scale response to actual E-field magnitude at 200λ
E_field = AF ./ radius; % E ∝ AF / R
% This is optional: Convert to dB for visualization
E_dB = 20 * log10(abs(E_field) / max(abs(E_field))); % Normalize to max
% Plot the pattern
figure;
polarplot(deg2rad(az), E_dB, 'LineWidth', 1.5);
title('Far-field E-field Magnitude at 200λ');
rlim([-40 0]); % Limit to -40 dB
grid on;

Community Treasure Hunt

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

Start Hunting!

Translated by