Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Array factor with FFT

Status
Not open for further replies.

rogotad

Newbie level 1
Joined
Oct 7, 2009
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
italia
Activity points
1,289
Hi everyone

I'm trying to calculate the array factor of a very simple uniform equispaced lienar broadside array both via the classical formula, and via FFT, following what is stated in Antenna arrays: a computational approach, page 67

However, I cannot achieve a correct match, the two functions are similar but different. I think the classical function is correct, because there is a clear enlargement of the lobes as the endfire direction is approached, as expected, while the FFt function has uniform lobes.

I attach my matlab code

Code:
Nelements =17;

Npoints = 1024;
Ntheta = Npoints;
thetalimit = 90;
theta_deg  = linspace(-thetalimit,thetalimit,Ntheta);
theta= pi*theta_deg/180;

% Uniform linear broadside equispaced array
d = 0.5; % in wavelengths

Start = ones(1,Nelements); %uniform excitation, 0 phase

AF = zeros(size(theta));

a = abs(Start);

phi = angle(Start);

%Classical Array Factor
for n = 1:Nelements

    AF = AF + a(n) * exp(1j * phi(n)) * exp(1j * n * 2 * pi * d * sin(theta));

end

%AF = AF / max(abs(AF));
%--------------------------------------------------------------------------

% FFT Array Factor

AF_FFT = fftshift(fft(Start,Npoints));


figure
hold on;
plot(theta,20*log10(abs(AF)),'Color','r','LineWidth',2);
    
plot(theta,20*log10(abs(AF_FFT)),'Color','b','LineWidth',1);

Please let me know what I'm doing wrong

Thank you
 
Last edited:

I hope you still need an answer
The phase needs mapping. I suggest that you look at https://www.jpier.org/PIERM/pierm16/09.10101003.pdf equation 7, which explains the mapping

to run you matlab code, replace your last line with these three

phi1p=acos((0:Npoints/2-1)/d/Npoints);
phi1=[fliplr(phi1p)-pi/2 pi/2-phi1p];
plot(phi1,20*log10(abs(AF_FFT)),'Color','b','LineWidth',1);

I hope this helps

Ilan
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top