Propagation of Angular Spectrum Code

Click For Summary
SUMMARY

The discussion focuses on the implementation of a MATLAB code to propagate a Gaussian field using the angular spectrum method, specifically addressing the propagation factor in the context of Fourier optics. The user compares two equations for the propagation factor, one from Goodman’s "Fourier Optics" and another from a physics forum. The user seeks clarification on the computational definition of the spatial frequency vectors, ##f_x## and ##f_y##, when sampling a square aperture. The solution involves utilizing the 2-D discrete Fourier transform to derive ##f_x## and ##f_y## from the sampled array.

PREREQUISITES
  • Understanding of the angular spectrum method in optics
  • Familiarity with MATLAB programming
  • Knowledge of Fourier transforms and their applications in optics
  • Basic concepts of spatial frequency in imaging systems
NEXT STEPS
  • Study the implementation of the 2-D discrete Fourier transform in MATLAB
  • Review Goodman's "Fourier Optics" for detailed explanations of propagation factors
  • Explore the relationship between spatial frequencies and aperture sampling
  • Investigate advanced topics in angular spectrum propagation techniques
USEFUL FOR

Optical engineers, MATLAB programmers, and researchers in the field of optics looking to implement and understand the angular spectrum method for wave propagation analysis.

stephen8686
Messages
42
Reaction score
5
TL;DR
I am trying to code angular spectrum beam propagation in matlab, but I'm having trouble with the propagation factor.
I'm making a MATLAB code to propagate a gaussian field in the angular spectrum regime (fresnel number >> 1).
After Fourier transforming the field, you propagate it: $$U(k_x,k_y,z) = U(k_x,k_y,0)e^{ik_z z}$$
The thing that I am having trouble with is the propagation factor, I have looked at this thread: https://www.physicsforums.com/threads/code-of-the-angular-spectrum-method.823494/
and they say that
$$k_z = \frac{k_0 z}{\sqrt{x^2+y^2+z^2}}$$
where ##k_0 = 2\pi/\lambda##
But I've been following Goodman's Fourier Optics book which says that it should be (Eq 3-62)
$$k_z = k_0\sqrt{1-(\lambda f_x)^2-(\lambda f_y)^2}$$
And I don't see how they are equivalent.

But here is my real question. If I use Goodman's propagation factor, what are ##f_x## and ##f_y## computationally?
Say I have a square aperture length = 1m, and I sample it 2048 times along each axis. Then my x and y vectors go from -0.5 to 0.5 with 2048 points, in Matlab language:
x = -L/2:dx:L/2-dx;
So how do I get a ##f_x## vector? I feel like it should be ##2\pi/x## or something, but that doesn't work.

Hope my latex works. If you need more clarification just ask. Thanks
 
  • Like
Likes   Reactions: Delta2
Science news on Phys.org
Take the 2-d discrete Fourier transform of your sampled array, i.e from Goodman's eqn. 3-63,
$$
A(\frac{\alpha}{\lambda},\frac{\beta}{\lambda},0)=\int \int_{-\infty}^{\infty}U(x,y,0)exp[-j2\pi (\frac{\alpha}{\lambda}x + \frac{\beta}{\lambda}y)]dxdy
$$
$$
A(\frac{\alpha}{\lambda},\frac{\beta}{\lambda},0)=A(f_x,f_y,0)
$$
##f_x## corresponds to a row number and ##f_y## corresponds to a column number of the FT array.
 
  • Like
Likes   Reactions: Delta2

Similar threads

  • · Replies 11 ·
Replies
11
Views
4K
  • · Replies 13 ·
Replies
13
Views
2K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 17 ·
Replies
17
Views
2K
Replies
1
Views
2K
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K