Recreating embedded antenna pattern from isolated element and S-parameter matrix
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
endMy 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 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 s-parameters, embedded element pattern, active element pattern, matlab MATLAB Answers — New Questions