Recreating embedded antenna pattern from isolated element and S-parameter matrix

3 次查看(过去 30 天)
My objective is to calculate the active element pattern of the central element in a rectangular array. According to Eq. (17) in David M. Pozar's paper, "A Relation Between the Active Input Impedance and the Active Element Pattern of a Phased Array," this equation provides the embedded pattern of the mth antenna. While I believe I have correctly implemented this function, the results are not as expected. If anyone has experience with similar calculations, I would appreciate any insights or feedback on why there is a discrepancy between complexEmbPattern and complexEmbPattern_.
The conversion from phi/ theta to elevation/azimuth has been done according to Matlab's: Antenna Toolbox Coordinate System - MATLAB & Simulink (mathworks.com)
Thank you in advance for your assistance!
Physical Constants:
freq = 30e9;
c = physconst('lightspeed');
lambda = c/freq;
wn = 2*pi/lambda;
azimuth = -180:5:180;
elevation = -90:5:90;
Isolated Element:
element = dipole;
element.Length = 0.47*lambda;
element.Width = cylinder2strip(0.191e-3);
figure;
show(element);
isoEfieldPattern = pattern(element, freq, azimuth, elevation, ...
'Type', 'efield');
isoPhasePattern = pattern(element, freq, azimuth, elevation, ...
'Type', 'phase', ...
'Polarization', 'V');
complexIsoPattern = isoEfieldPattern.*exp(1j*deg2rad(isoPhasePattern));
Embedded Element Pattern:
N = 3;
M = 3;
K = M*N;
a = 0.5*lambda;
b = 0.5*lambda;
array = rectangularArray;
array.Element = element;
array.Element.Tilt = 90;
array.Element.TiltAxis = 'Y';
array.Size = [N M];
array.ColumnSpacing = a;
array.RowSpacing = b;
array.Tilt = 90;
array.TiltAxis = 'Y';
figure;
show(array);
ElemIndex = (prod(array.Size) - 1)/2 + 1;
Zinf = 76 + 1i*31;
embEfieldPattern = pattern(array, freq, azimuth, elevation, ...
'ElementNumber', ElemIndex, ...
'Termination', real(Zinf), ...
'Type', 'efield');
embPhasePattern = pattern(array, freq, azimuth, elevation, ...
'ElementNumber', ElemIndex, ...
'Termination', real(Zinf), ...
'Type', 'phase', ...
'Polarization', 'V');
complexEmbPattern = embEfieldPattern.*exp(1j*deg2rad(embPhasePattern));
Sparam = sparameters(array, freq, real(Zinf)).Parameters;
complexEmbPattern_ = ones(size(elevation,2),size(azimuth,2));
m = ElemIndex;
for az = 1:length(azimuth)
for el = 1:length(elevation)
u = wn*a*cosd(elevation(el))*sind(azimuth(az));
v = wn*b*sind(elevation(el));
i_m = mod(m - 1, M) + 1;
j_m = floor((m - 1)/M) + 1;
sum = 0;
for n = 1:K
i_n = mod(n - 1, M) + 1;
j_n = floor((n - 1)/M) + 1;
sum = sum + Sparam(n, m)*exp(1i*((i_n - 1)*u + (j_n - 1)*v));
end
complexEmbPattern_(el, az) = complexIsoPattern(el, az)*(exp(1i*((i_m - 1)*u + (j_m - 1)*v)) + sum);
end
end

回答(1 个)

Ronit
Ronit 2024-9-16
Hello Joao,
To troubleshoot the discrepancy between complexEmbPattern and complexEmbPattern_, please consider the following suggestions:
  1. Coordinate System: Ensure that the conversion from "azimuth/elevation" to the coordinate system and the indexing for the "azimuth" and "elevation" arrays are implemented correctly.
  2. Phase Calculation: The "deg2rad" function is correct but ensure that all phase-related calculations consistently use radians.
  3. Test with Simplified Scenarios: Try reducing the array size (e.g., 2x2) and spacing to simplify calculations and observe if the issue persists. Compare "complexEmbPattern" and "complexEmbPattern_" for specific angles to pinpoint where they diverge.
  4. Debugging: Use MATLAB's debugging tools, such as breakpoints and the command window, to step through the code and inspect variable values in real-time.
If these steps do not resolve the issue, consider sharing specific values or outputs where the patterns differ significantly. This can help in diagnosing the problem further. Additionally, reviewing the MATLAB documentation on Phased Aarray System Toolbox might provide more insights into handling phased array calculations.
Please find the documentation link for Phased Aarray System Toolbox: https://www.mathworks.com/help/phased/index.html
I hope it helps with your query!

类别

Help CenterFile Exchange 中查找有关 Get Started with Antenna Toolbox 的更多信息

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by