This code shows basic beamforming by coherently adding radiation patterns from uniformly spaced antenna elements with a fixed phase. The beam direction is steered by the phase parameter. It generates a 3D plot to visualize beamforming by coherently combining antenna element patterns
-
Key steps:
-
Create meshgrid of angles X,Y to plot beam pattern over
-
Set number of antenna elements n and spacing k
-
Define phase p to steer the beam
-
Loop over antenna elements
-
Add up radiation pattern from each element coherently
-
Plot 3D beam pattern surface from combined elements
-
Show pattern from two view angles
-
Key parameters:
-
n - number of antenna elements
-
k - spacing between elements
-
p - phase applied to each element
-
Varying n changes beamwidth
-
Varying k changes number of lobes
-
Varying p steers the beam direction
< Code 1 >
function main
xstep = -10*pi:pi/10:10*pi;
ystep = -10*pi:pi/10:10*pi;;
[X,Y] = meshgrid(xstep,ystep);
n=8; % should be even integer
k=2;
p = 36*pi/4;
Z = zeros(length(xstep));
for i = ((0:(n-1))-((n-1)/2))
[X1,Y1] = meshgrid(xstep+(i*pi/k),ystep);
Z = Z+(waveCosPh(X1,Y1,p,p));
end;
hFig = figure(1,'Position',[300 300 700 280]);
subplot(1,2,1);
surface(X,Y,Z,'edgecolor','none');
xlim([-10*pi 10*pi]);ylim([-10*pi 10*pi]);zlim([-10,10]);
view([-40 70]);
set(gca,'xticklabel',[]);
set(gca,'yticklabel',[]);
set(gca,'zticklabel',[]);
set(gca,'xtick',[]);
set(gca,'ytick',[]);
set(gca,'ztick',[]);
subplot(1,2,2);
surface(X,Y,Z,'edgecolor','none');
xlim([-10*pi 10*pi]);ylim([-10*pi 10*pi]);zlim([-10,10]);
view([0 90]);
set(gca,'xticklabel',[]);
set(gca,'yticklabel',[]);
set(gca,'zticklabel',[]);
set(gca,'xtick',[]);
set(gca,'ytick',[]);
set(gca,'ztick',[]);
end;
function z = waveCosPh(x,y,Ph,r)
d = sqrt(x.^2 + y.^2)-Ph;
dim = size(d);
dr = dim(1);
dc = dim(2);
for i = 1 : dr
for j = 1 : dc
if d(i,j) > r
d(i,j) = pi/2;
end;
end;
end;
%z = cos(d-Ph);
z = cos(d);
end
|