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:(n1))((n1)/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(dPh);
z = cos(d);
end
