Rotate antenna radiation pattern using rotpat function such that boresight is aligned with the x-axis

17 views (last 30 days)
Hello, I have a radiation pattern of a waveguide whose boresight is aligned in the z-axis. The pattern is given in spherical coordinates: phi = 0 : 360 and theta = 0:180. I want the boresight of the antenna to be rotated to x-axis, so that it is aligned with the measurement system.
How can I use the 'rotpat' function to rotate the radiation pattern? Rotpat function only accepts elevation values <=90.
Prior to that, do I need to use 'phitheta2azelpat' to convert the radiation pattern from phi-theta coordinates to azimuth-elevation coordinates?
Thank you.

Answers (1)

Umeshraja
Umeshraja on 6 Sep 2024
Edited: Umeshraja on 21 Sep 2024
To align an antenna's boresight with the x-axis, you can rotate its radiation pattern using the ‘rotpat’ function from the Phased Array Toolbox. This function requires azimuth and elevation angles, so you'll need to convert your phi and theta angles accordingly. Instead of using ‘phitheta2azel’, consider using ‘phitheta2azelpat’, which directly converts the antenna radiation pattern from phi and theta coordinates to azimuth and elevation coordinates.
For guidance on using ‘rotpat’, check the "Rotate Pattern of Short-Dipole Antenna" example in the documentation
In the example below, the antenna pattern is rotated around the y-axis by 90 degrees to align the boresight along the x-axis. This is a modified version of the example from the documentation:
antenna1 = phased.ShortDipoleAntennaElement;
el = -90:90;
az = -180:180;
fc = 3e8;
% Initialize pattern matrices
[pat_h, pat_v] = deal(zeros(numel(el), numel(az), 'like', 1+1i));
% Calculate antenna patterns
for m = 1:numel(el)
temp = antenna1(fc, [az; el(m) * ones(1, numel(az))]);
pat_h(m, :) = temp.H;
pat_v(m, :) = temp.V;
end
% Create figure
figure;
% Plot original antenna radiation pattern
subplot(1, 2, 1);
pattern(antenna1, fc, 'Type', 'Power');
title("Original Antenna Radiation Pattern");
% Rotate antenna pattern
newax = roty(90);
pat2_h = rotpat(pat_h, az, el, newax);
pat2_v = rotpat(pat_v, az, el, newax);
% Create custom antenna with rotated pattern
antenna2 = phased.CustomAntennaElement( ...
'SpecifyPolarizationPattern', true, ...
'HorizontalMagnitudePattern', mag2db(abs(pat2_h)), ...
'HorizontalPhasePattern', rad2deg(angle(pat2_h)), ...
'VerticalMagnitudePattern', mag2db(abs(pat2_v)), ...
'VerticalPhasePattern', rad2deg(angle(pat2_v)));
% Plot rotated antenna radiation pattern
subplot(1, 2, 2);
pattern(antenna2, fc, 'Type', 'Power');
title("Antenna Radiation Pattern After Rotation");
set(gcf, 'Position', [100, 100, 1200, 500]);
For more information on 'phitheta2azelpat', refer to the following MATLAB R2021a documentation:

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!