Antenna Radiation - Ripple Animation   This slideshow (animation) shows how a beam is formed by the interference of multiple individual waves (water wave in this example). The animation goes as follows : i) 8 pebbles are falling from the same height and with exact same velocity. The distance between one pebble and another pebble right next to it is exactly same. Each of the pebble is equivalent to each antenna element in an antenna array and the distance between each pebble is equivalent to the distance between each antenna element in the array antenna. ii) The 8 pebbles are impacting on the surface of water all at the same time. This is equivalent to the case in array antenna where the signal phase from each antenna element is same meaning there is no phase difference between one antenna and another antenna right next to it. iii) Water waves are generated from each of the pebble and propagate in all direction. iv) As waves propagates, they interfere each other constructively at some point and destructively at some other points. This inferference forms a pattern in which some are shows high wave crest and some other area shows low trough. This pattern is equivalent to a beam formed by an array atenna.

 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