Пытаюсь построить трехмерную ДН прямоугольной ФАР в координатах угол места, азимут. Для этого использую код

Код
theta0=30; % угол места
phi0=30;  % азимут

N=32;
Nxr=N;
Nyr=N;
dolx=0.5;
doly=0.5;

eps = 0.001;
nx = 0:Nxr-1;
ny = 0:Nyr-1;
i = sqrt(-1);

% choose proper size fft
Nrx = 10 * Nxr;
Nry = 10 * Nyr;
nfftx = 2^(ceil(log(Nrx)/log(2)));
nffty = 2^(ceil(log(Nry)/log(2)));

% generate array of elements
array = ones(Nxr,Nyr);

%======================================================================

% convert steering angles (theta0, phi0) to radians
theta0 = theta0 * pi / 180;
phi0 = phi0 * pi / 180;
% convert steering angles (theta0, phi0) to U-V sine-space
u0 = sin(theta0) * cos(phi0);
v0 = sin(theta0) * sin(phi0);

% Use formula thetal = (2*pi*n*dol) * sin(theta0)
    phasem = exp(i*2*pi*dolx*u0 .* nx );
    phasen = exp(i*2*pi*doly*v0 .* ny );

% add the phase shift terms
array = array .* (transpose(phasem) * phasen);
w = array;  

%==========================================================================

% Compute array pattern
arrayfft = abs(fftshift(fft2(w,nfftx,nffty))).^2;

%compute [su,sv] matrix
U = [-nfftx/2:(nfftx/2)-1] ./(dolx*nfftx);
indexx = find(abs(U) <= 1);
U = U(indexx);

V = [-nffty/2:(nffty/2)-1] ./(doly*nffty);
indexy = find(abs(V) <= 1);
V = V(indexy);

%Normalize to generate gain patern
rbar=sum(sum(arrayfft(indexx,indexy))) / dolx/doly/4./nfftx/nffty;
arrayfft = arrayfft(indexx,indexy) ./rbar;

V = asin(V);
U = asin(U);
V = V .* (180.0 / pi);
U = U .* (180.0 / pi);

pattern = 10*log10(arrayfft +eps);
figure(1)
mesh(V,U,pattern);


Но в итоге если замерить центр максимума, то его координаты получаются не те, которые ожидалось увидеть (в данном примере 30 азимут и 30 угол места).
Что не так делается?