Этот пример вычисляет и сравнивает передачу, и получите коллекторы для основной антенной решетки полуволнового диполя. Коллектор массивов является основным свойством антенных решеток, и в передаче, и получите настройки. Передача и получает коллекторы, теоретически то же самое из-за теоремы взаимности. Этот пример подтверждает это равенство, таким образом обеспечивающее важную верификацию вычислений, выполняемых 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 МГц сделано в наблюдательных постах, заданных на сфере далекого поля и рассмотрении вертикального вклада поляризации явным образом, поскольку дипольная ориентация является вертикальной. Анализ проводится таким образом, что элемент при возбуждении имеет a загрузите последовательно с источником напряжения, и все другие элементы, которые не являются объектом возбуждения, не имеют никакого внутреннего импеданса.
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)
Этот пример был разработан в сотрудничестве с профессором Бенджамином Фридлендером в Калифорнийском университете, Санта-Круз.
Подрешетки в большом конечном массиве для гибридного Beamforming | Планирование 5G фиксированная ссылка беспроводного доступа по ландшафту