Array toolbox array gain calculation for tapered planar array seems inaccurate.

3 views (last 30 days)
According to Van Trees, H.L., "Optimum Array Processing," section 2.6.2., the array gain for any arbitrary array geometry should be equal to under the assumption that the weight vector, , has been normalized to satisfy the distortionless constraint that , where is the array manifold vector. If the weight vector is not normalized, then the array gain can instead be calculated as .
In MATLAB, create a URA as such:
% set up the array
fc = 3e9; % can be anything
c = physconst('LightSpeed');
dy = c/fc/2;
dz = dy;
N = 48; % can be any integer
M = 48; % can be any integer
% create a 2-D Taylor taper array
nbar = 4; % can be any integer. Set to '1' for untapered
SLL = -40; % can be any negative value
wn = taylorwin(N,nbar,SLL);
wm = taylorwin(M,nbar,SLL);
W = wn * wm.';
% create the array object
array = phased.URA([N M],[dz dy],'Taper',W);
Now calculate the array gain using MATLAB's toolbox and Van Trees's method:
% calculate the array gain using MATLAB
gain = phased.ArrayGain("SensorArray",array);
g_MATLAB = gain(fc,[0;0]);
% note: MATLAB seems to expect that the taper vector is NOT normalized.
% In other words, sum(W(:)) = N*M
% calculate the array gain using Van Trees's method:
% the manifold vector is presumed to be ones(length(W),1) for a signal at broadside
g_tapered = 10*log10(abs(sum(W(:)))^2/(W(:)'*W(:)));
% or the same answer is obtained if we first normalize the weight vector
W = W/N/M;
g_tapered_normalized = 10*log10(1/(W(:)'*W(:)));
The answer produced by MATLAB is the same as if the array were not tapered, i.e., 10*log10(N*M). This does not seem accurate. Am I doing something wrong? By intuition alone, regardless of calcuation method, the array gain should always go down for a tapered array as compared to untapered.

Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!