How to compute the gain from radiation pattern data

19 ビュー (過去 30 日間)
Pierre
Pierre 2025 年 2 月 21 日
回答済み: AR 2025 年 4 月 25 日
Helo,
I am looking for a routine that computes trhe gaon of an antenna form tadiation pattern data. Sometimes only the radiation patterns from the priciple planes is available, so an interpolation on phi axis would be appropriate to use.
Thank you
  2 件のコメント
David Goodmanson
David Goodmanson 2025 年 2 月 21 日
Hi Pierre,
do you mean the gain or the directivity? Gain requires the input power to the antenna, directivity just uses the radiation pattern (interpolated if need be).
Pierre
Pierre 2025 年 2 月 21 日
directivity

サインインしてコメントする。

回答 (1 件)

AR
AR 2025 年 4 月 25 日
We can calculate the directivity from the radiation pattern by following the steps below:
1. Define a function to compute the directivity.
function D = compute_directivity(theta_data, phi_data, P_data)
% theta_data: vector of elevation angles (0 to π)
% phi_data: vector of azimuth angles (0 to 2π)
% P_data: matrix of radiation intensities over these angles
2. Convert theta_data and phi_data vectors into 2D grids using “meshgrid”. This is required for interpolation and integration.
[theta_grid, phi_grid] = meshgrid(theta_data, phi_data);
3. Define a dense grid for interpolation.
theta_dense = linspace(0, pi, 180);
phi_dense = linspace(0, 2*pi, 360);
[theta_dense_grid, phi_dense_grid] = meshgrid(theta_dense, phi_dense);
4. Interpolate the pattern over the Dense Grid.
P_dense = interp2(theta_grid, phi_grid, P_data.', theta_dense_grid, phi_dense_grid, 'spline');
5. Compute differential solid angle element.
dOmega = sin(theta_dense_grid) .* (pi/180) .* (2*pi/360);
6. Compute total radiated power, maximum radiation intensity and directivity.
Prad = sum(P_dense(:) .* dOmega(:));
Umax = max(P_dense(:));
D = 4 * pi * Umax / Prad;
For example:
theta = linspace(0, pi, 91); % 0 to 180 degrees (elevation)
phi = linspace(0, 2*pi, 181); % 0 to 360 degrees (azimuth)
P = abs(sin(theta')).^2 * ones(1, length(phi)); % Simulated dipole pattern
D = compute_directivity(theta, phi, P);
disp(['Directivity = ', num2str(D)])
For more information on “meshgrid and “interp2”, refer to the below documentation links:
Hope this helps!

カテゴリ

Help Center および File ExchangeAntennas and Electromagnetic Propagation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by