Antenna Radiation - Rotating Beam

 

 

this code shows how to steer a beam using steering vector. The code applies a steering vector to the array factors to align the phases and steer the beam direction, demonstrating electronic scanning. The steering angle sta parameter controls the beam pointing direction.

  • Key Aspects:
    • Defines array factor based on spatial angle
    • Applies steering vector to coherently sum
    • Plots beam patterns
  • Parameters:
    • n = 8 elements
    • d = spacing between elements
    • sta = steering angle
    • Varying sta electronically steers beam
    • Maintains fixed beamwidth
  • Plots:
    • Array factor magnitude vs angle
    • Normalized array factor on polar plot
    • Array factor in dB
    • Beam steering on x-axis

 

< Code 1 >

 

theta = -1.0*pi:pi/100:1.0*pi;

phaseShift = exp(-j*2*pi/8);

 

pn = 20;

p = pn*pi/20;

d = 2.0;

sn = 20;

sta = -sn*pi/20; %Steering Angle

 

a_theta = [exp(-j .* 0 .* d .* sin(theta)) ;

           exp(-j .* 1 .* d .* sin(theta));

           exp(-j .* 2 .* d .* sin(theta));

           exp(-j .* 3 .* d .* sin(theta));

           exp(-j .* 4 .* d .* sin(theta));

           exp(-j .* 5 .* d .* sin(theta));

           exp(-j .* 6 .* d .* sin(theta));

           exp(-j .* 7 .* d .* sin(theta))];

stv = [-exp(j * 0 * sta);

       -exp(j * 1 * sta);

       -exp(j * 2 * sta);

       -exp(j * 3 * sta);

       -exp(j * 4 * sta);

       -exp(j * 5 * sta);

       -exp(j * 6 * sta);

       -exp(j * 7 * sta)];       

 

 

a_theta =  stv .* a_theta;          

a_theta_sum = sum(a_theta);

%s_theta_sum = sum(s_theta);

a_theta_sum_abs = abs(a_theta_sum);

a_theta_sum_abs = a_theta_sum_abs ./ max(a_theta_sum_abs);

a_theta_sum_abs_dB = 10 .* log(a_theta_sum_abs);

 

for i = 1:length(a_theta_sum_abs_dB)

    if a_theta_sum_abs_dB(i) <= -30

        a_theta_sum_abs_dB(i) = -30;

    end;    

end;    

 

 

 

a_theta_sum_abs_dB = a_theta_sum_abs_dB - min(a_theta_sum_abs_dB);

if max(a_theta_sum_abs_dB) != 0

   a_theta_sum_abs_dB = a_theta_sum_abs_dB/max(a_theta_sum_abs_dB);

end

 

hFig = figure(1,'Position',[300 300 700 600]);

 

subplot(2,5,[1 2]);

plot(theta,a_theta_sum_abs);

xlim([-pi pi]);

ylim([0 1]);

tStr = sprintf("d = %0.2f, steering angle  = %d pi/20",d,sn);

title(tStr);

 

set(gca,'xtick',[-pi -(3/4)*pi  -pi/2 -pi/4 0 pi/4 pi/2 (3/4)*pi pi]);

set(gca,'xticklabel',{'-pi','-3pi/4','-pi/2' '-pi/4' '0' 'pi/4' 'pi/2','-3pi/4','pi'});

 

subplot(2,5,[4 5]);

polar(theta,a_theta_sum_abs,'-r');

t = findall(gcf,'type','text');

%delete(t);

 

 

subplot(2,5,[6 7]);plot(theta,10 .* log(a_theta_sum_abs));ylim([-30 1]);

xlim([-pi pi]);

tStr = sprintf("d = %0.2f, steering angle  = %d pi/20",d,sn);

title(tStr);

 

set(gca,'xtick',[-pi -(3/4)*pi  -pi/2 -pi/4 0 pi/4 pi/2 (3/4)*pi pi]);

set(gca,'xticklabel',{'-pi','-3pi/4','-pi/2' '-pi/4' '0' 'pi/4' 'pi/2','-3pi/4','pi'});

 

subplot(2,5,[9 10]);

polar(theta,a_theta_sum_abs_dB,'-r');

 

t = findall(gcf,'type','text');