# Propagation of Angular Spectrum Code

• I
• stephen8686
In summary: So, in MATLAB, you can create a vector for ##f_x## and ##f_y## using the built-in function fftfreq. In summary, the issue with the propagation factor can be resolved by using the 2-d discrete Fourier transform and creating a vector for ##f_x## and ##f_y## using fftfreq in MATLAB.
stephen8686
TL;DR Summary
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

Delta2
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.

Delta2

## 1. What is the "Propagation of Angular Spectrum Code"?

The "Propagation of Angular Spectrum Code" is a mathematical model used in optics to simulate the propagation of light through a medium. It is based on the angular spectrum representation of a wave, which describes a wave as a superposition of plane waves with different directions and frequencies.

## 2. How does the "Propagation of Angular Spectrum Code" work?

The code works by breaking down the incident wave into its angular spectrum components and then propagating each component through the medium using the Fresnel diffraction integral. The propagated components are then recombined to obtain the final wave at the desired location.

## 3. What are the applications of the "Propagation of Angular Spectrum Code"?

The code is commonly used in optical imaging, holography, and diffraction-based experiments to simulate the behavior of light in various media. It can also be used in the design of optical systems and in the analysis of light-matter interactions.

## 4. Are there any limitations to the "Propagation of Angular Spectrum Code"?

One limitation of the code is that it assumes the medium is linear and homogeneous, which may not be the case in all situations. Additionally, the code may not accurately model some complex optical phenomena, such as scattering or nonlinear effects.

## 5. How can I learn more about the "Propagation of Angular Spectrum Code"?

There are many resources available online that explain the theory and implementation of the code in detail. You can also consult scientific papers and textbooks on optics and computational physics for more information. Additionally, there are software packages and libraries available that utilize the code for simulation and analysis purposes.

Replies
1
Views
3K
Replies
11
Views
2K
Replies
13
Views
1K
Replies
1
Views
3K
Replies
1
Views
1K
Replies
9
Views
938
Replies
3
Views
1K
Replies
2
Views
2K
Replies
17
Views
2K
Replies
1
Views
1K