Fresnel-like diffraction using linear convolution

5 vues (au cours des 30 derniers jours)
David
David le 26 Juin 2014
Commenté : David le 5 Juil 2014
Hi guys,
I'm trying to calculate the convolution of a Gaussian function and a parabolic wavefront (like in Fresnel diffraction):
x=linspace(-30,30,100);
w=0.5;
k=1;
A=exp(-x.^2/w^2);
B=exp(-ii*k*x.^2);
C=conv(A,B);
plot(abs(C))
My question is, does the above code calculate the linear convolution (and not the circular convolution)?
The reason I ask is that I seems that C is composed of a number of peaks depending on the value of k. I wasn't expecting that, but then again my intuition is often defeated by such problems.
Cheers, David

Réponses (1)

Matz Johansson Bergström
Matz Johansson Bergström le 5 Juil 2014
Hello, perhaps this answer is late, but it might help someone else.
I have tried your code and I don't know much about Fresnel diffraction, but I can only see one peak. You never provided a value for ii, but it doesn't seem to matter in my case.
Instead, to answer what I do know about, conv is producing a linear convolution. To convince yourself you can check the definition or use FFT with zero padding.
So,
n=5;
a = rand(1,n);
tmp1 = conv(a,a); %Matlab conv
tmp2 = ifft(fft([a, 0*a]).*fft([a, 0*a])); %FFT with zero padding = linear convolution
and the results are that tmp1(1:n) and tmp2(1:n) are identical. So, conv is thus convolving linearly, just like for a zero padded FFT.
  3 commentaires
Star Strider
Star Strider le 5 Juil 2014
Instead of your own ‘ii’ variable, use 1i. That is the preferred MATLAB designation for the imaginary operator.
David
David le 5 Juil 2014
Hi Star Strider,
Yeah, I recently discovered 1i performs the same function. I'll adopt that in the future.
David

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by