Dolph
Dolph
dolph.m - Dolph-Chebyshev array weights Usage: [a, dph] = dolph(d, ph0, N, R) d ph0 N R = = = = element spacing in units of lambda beam angle in degrees (broadside ph0=90) number of array elements (even or odd) relative sidelobe level in dB, (e.g. R = 30)
a = row vector of array weights (steered towards ph0) dph = 3-dB beamwidth in degrees note: array factor is Chebyshev A(psi) = T_{N-1}(x), x = x0 * cos(psi/2), see also UNIFORM, BINOMIAL, TAYLOR, SECTOR, DOLPH2, DOLPH3
% S. J. Orfanidis - 1997 - www.ece.rutgers.edu/~orfanidi/ewa function [a, dph] = dolph(d, ph0, N, R) if nargin==0, help dolph; return; end N1 = N - 1; Ra = 10^(R/20); x0 = cosh(acosh(Ra)/N1); dmax = acos(-1/x0)/pi; % number of pattern zeros % sidelobe level in absolute units % scaling factor % maximum element spacing
if d>dmax, fprintf('maximum allowed spacing is dmax = %.4f\n', dmax); return; end i = x = psi z = 1:N1; cos(pi*(i-0.5)/N1); = 2 * acos(x/x0); exp(j*psi); % N1 zeros of Chebyshev polynomial T_N1(x) % N1 array pattern zeros in psi-space % N1 zeros of array polynomial % zeros-to-polynomial form, N1+1 = N coeffi % steer towards ph0 % 3-dB Chebyshev variable x % exact 3-dB frequency % 3-dB width % 3-dB width in phi-space
a = real(poly2(z)); cients a = steer(d, a, ph0); x3 = cosh(acosh(Ra/sqrt(2))/N1); psi3 = 2*acos(x3/x0); dps = 2*psi3; dph = bwidth(d, ph0, dps);