Main Content

Sinc Antenna as Approximation for Array Response Pattern

This example shows how a sinc antenna element can approximate the radiation pattern of an array.

Create a 5-by-2 rectangular array of isotropic elements designed to work at an operating frequency of 3 GHz. Specify an element spacing equal to half the wavelength.

fc = 3e9;
lambda = freq2wavelen(fc);
array = phased.URA('ElementSpacing',lambda/2,'Size',[5 2]);

Compute the radiation pattern of the array. Specify a range of azimuth angles from –90° to 90° and zero elevation. Plot the unnormalized azimuth pattern in polar coordinates.

az = -90:0.5:90;

recopts = {'CoordinateSystem','rectangular','Type','powerdb'};
polopts = {'CoordinateSystem','polar','Type','powerdb'};

arrayPatternAz = pattern(array,fc,az,0,recopts{:});

pattern(array,fc,az,0,polopts{:})

Normalize the pattern so that its maximum value is 0 dB. Compute the azimuth beamwidth.

arrayPatternAzNorm = arrayPatternAz - max(arrayPatternAz);
arrayAzBw = beamwidth(array,fc);

Compute the radiation for a range of elevation angles from –90° to 90° and zero azimuth. Normalize the pattern and compute the beamwidth. Plot the unnormalized elevation pattern in polar coordinates.

el = -90:0.5:90;

arrayPatternEl = pattern(array,fc,0,el,recopts{:});

arrayPatternElNorm = arrayPatternEl - max(arrayPatternEl);
arrayElBw = beamwidth(array,fc,'Cut','Elevation');

pattern(array,fc,0,el,polopts{:})

Create a sinc antenna element with the same beamwidth as the array. Compute the azimuth and elevation patterns. The patterns are normalized by construction.

se = phased.SincAntennaElement('Beamwidth',[arrayAzBw arrayElBw]);

sePatternAz = pattern(se,fc,az,0,recopts{:});
sePatternEl = pattern(se,fc,0,el,recopts{:});

Find the smallest positive azimuth angle at which the patterns differ by about 3 dB. Plot the azimuth patterns in rectangular coordinates. Overlay the 3-dB points. The sinc azimuth pattern matches the array azimuth pattern well out to about 60 degrees.

idxAz = find((abs(arrayPatternAzNorm - sePatternAz) >= 3) & (az' >= 0),1);
az3dB = az(idxAz);

figure
plot(az,arrayPatternAzNorm,az,sePatternAz)
xline([-az3dB az3dB],'--')

title("Az Cut: Normalized Array and Sinc Antenna Patterns")
xlabel("Azimuth Angle, az (degrees)")
ylabel("Power (dB)")
legend("Array","Sinc","3-dB Point",Location="south")
ylim([-50 0])

Repeat the process for the elevation patterns. The sinc pattern is a good approximation out to about 20 degrees.

idxEl = find((abs(arrayPatternElNorm - sePatternEl) >= 3) & (el' >= 0),1);
el3dB = el(idxEl);

plot(el,arrayPatternElNorm,az,sePatternEl)
xline([-el3dB el3dB],'--')

title("El Cut: Normalized Array and Sinc Antenna Patterns")
xlabel("Elevation Angle, el (degrees)")
ylabel("Power (dB)")
legend("Array","Sinc","3-dB Point")
ylim([-50 0])

See Also

|