Этот пример вычисляет и сравнивает передающий и приемный коллекторы для основного полуволнового диполя антенной решетки. Многообразие массива является фундаментальным свойством антенных решеток как в передающей, так и в приёмных строениях. Передающее и приёмное многообразия теоретически одинаковы из-за теоремы о взаимности. Этот пример подтверждает это равенство, таким образом обеспечивая важную верификацию вычислений, выполненных Antenna Toolbox™.
Задайте переменные, необходимые для вычисления передающего и приемного коллекторов антенны. Частота для анализа составляет 300 МГц, что приводит к длине волны свободного пространства приблизительно 1. Задайте углы сдвига для азимута и повышения. Эти переменные будут использоваться, чтобы вычислить положения в дальнем поле антенны, в которых вычисляются электрическое и магнитное поля.
fc = 3e8;
lambda = physconst('lightspeed')/fc;
R = 100*lambda;
M = 4;
ZL = [];
phi = 5:5:175;
psi = 0:5:80;
nphi = length(phi);
npsi = length(psi);
np = nphi*npsi;
PHI = kron(ones(1,npsi),pi/180*phi);
PSI = kron(pi/180*psi,ones(1,nphi));
Переменные азимут и угол возвышения используются для вычисления точек на сфере с радиусом и единичные векторы.
antennapos = [[-(M-1)/2:(M-1)/2]*lambda/2;zeros(2,M)]'; x = R*cos(PSI).*cos(PHI); y = R*cos(PSI).*sin(PHI); z = R*sin(PSI); Points = [x;y;z]; h = [-sin(PHI);cos(PHI);zeros(size(PHI))]; v = [-cos(PHI).*sin(PSI);-sin(PHI).*sin(PSI);cos(PSI)]; u = [cos(PHI).*cos(PSI);sin(PHI).*cos(PSI);sin(PSI)];
Создайте полуволновой диполь антенну, расположенную вертикально вдоль оси Z. Используйте этот элемент, чтобы создать конформный массив диполей, расположенных в линейном строении с полуволновым интервалом между элементами.
d = dipole('Length',lambda/2,'Width',lambda/200); elem = [d,d,d,d]; dA = conformalArray('Element',elem,'ElementPosition',antennapos); figure; show(dA)
Используйте EHfields, чтобы вычислить электрические и магнитные вектора поля в режиме передачи для массива. Расчет поля на частоте 300 МГц выполняется в точках наблюдения, заданных в сфере дальнего поля и учитывающих вклад вертикальной поляризации явно, поскольку ориентация дипола вертикальна. Анализ проводится таким образом, что элемент, подвергаемый возбуждению, имеет нагрузка последовательно с источником напряжения, и все другие элементы, которые не находятся под возбуждением, не имеют никакого внутреннего импеданса.
nomLoad = lumpedElement('Impedance',ZL); actLoad = lumpedElement('Impedance',50); for i=[1,1:M] % setup loads for m=1:M dA.Element(m).Load = nomLoad; end dA.Element(i).Load = actLoad; % setup active element ampTaper = zeros(1,M); ampTaper(i) = 1; dA.AmplitudeTaper = ampTaper; [E,H] = EHfields(dA,fc,Points); Etx(i,:) = sum(E.*v); end
Чтобы вычислить приемный коллектор, рассмотрим плоскую волну, падающую на массив с той же поляризацией электрического поля, но противоположную по направлению к режиму передачи. Используйте объект planeWaveExcitation и функцию feedCurrent, чтобы вычислить ток, проходящий через каналы в ответ на ударную плоскую волну.
nomLoad = lumpedElement('Impedance',ZL); for m=1:M dA.Element(m).Load = nomLoad; end for n = 1:np dirVec = -u(:,n); polVec = v(:,n); p = planeWaveExcitation('Element',dA,'Direction',dirVec,'Polarization',polVec); Erx(:,n) = feedCurrent(p,fc).'; end
Вычислите нормированную ошибку между передающим и приемным коллекторами для каждого элемента массива. Измените форму ошибки, чтобы построить график как функцию азимута и углов возвышения соответственно
for i=1:M a(i) = Erx(i,:)/Etx(i,:); err(i,:) = abs(Erx(i,:)-a(i)*Etx(i,:)); mse = sqrt(mean(abs(a(i)*Etx(i,:)).*abs(Erx(i,:)))); err(i,:) = err(i,:)/mse; Etx(i,:) = a(i)*Etx(i,:); end ETX = reshape(Etx,M,nphi,npsi); ERX = reshape(Erx,M,nphi,npsi);
for i = 1:M ETXmag(i,:,:) = abs(squeeze(ETX(i,:,:)))'; ETXphase(i,:,:) = 180/pi*angle(squeeze(ETX(i,:,:)))'; ERXmag(i,:,:) = abs(squeeze(ERX(i,:,:)))'; ERXphase(i,:,:) = 180/pi*angle(squeeze(ERX(i,:,:)))'; end ERR = 20*log10(reshape(mean(err),nphi,npsi));
Передающий и приемный коллекторы показывают большую степень подобия на величинах и фазы. Это подтверждается графиком ошибки с максимальной погрешностью приблизительно -40 дБ по размаху азимута и углов возвышения.
for i=1:M figure; subplot(221) imagesc(phi,psi,squeeze(ETXmag(i,:,:))); colorbar colormap('jet') xlabel('Azimuth [deg]','LineWidth',6); ylabel('Elevation [deg]','LineWidth',6); title(['Tx magnitude pattern, ant ',num2str(i)],'FontSize',10) subplot(222) imagesc(phi,psi,squeeze(ETXphase(i,:,:))); colorbar colormap('jet') xlabel('Azimuth [deg]','LineWidth',6); ylabel('Elevation [deg]','LineWidth',6); title(['Tx phase pattern, ant ',num2str(i)],'FontSize',10) subplot(223) imagesc(phi,psi,squeeze(ERXmag(i,:,:))); colorbar colormap('jet') xlabel('Azimuth [deg]','LineWidth',6); ylabel('Elevation [deg]','LineWidth',6); title(['Rx magnitude pattern, ant ',num2str(i)],'FontSize',10); subplot(224) imagesc(phi,psi,squeeze(ERXphase(i,:,:))); colorbar colormap('jet') xlabel('Azimuth [deg]','LineWidth',6); ylabel('Elevation [deg]','LineWidth',6); title(['Rx phase pattern, ant ',num2str(i)],'FontSize',10); end
figure; imagesc(phi,psi,ERR'); colorbar colormap('jet') xlabel('Azimuth [deg]','LineWidth',6); ylabel('Elevation [deg]','LineWidth',6); title('Normalized error','FontSize',10)
Этот пример был разработан в сотрудничестве с профессором Бенджамином Фридландером в Калифорнийском университете, Санта-Крус.
Планирование 5G фиксированной ссылки беспроводного доступа по местности | Подрешетки в большом конечном массиве для гибридного формирования луча