Create 2D radial symmetric matrix from radius vector
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello, I have a following problem. I calculate intensity distribution Bessel-Gauss beam using Hankel transform. Input variables
f = 10000;
a = 10;
ff = 3.2;
w0 = ff * a;
lambda = 10^(-6);
k = 2 * pi / lambda;
N = 100;
rmax = 1.8 * lambda * f / a;
# observation plane
x1 = linspace(-rmax,rmax,N);
y1 = linspace(-rmax,rmax,N);
[U,V] = meshgrid(x1,y1);
W = sqrt(U.^2 + V.^2);
# aperture plane
xx = linspace(-a,a,N);
yy = linspace(-a,a,N);
[X,Y] = meshgrid(xx,yy);
R = sqrt(X.^2 + Y.^2);
Hankel transform:
A2 = zeros(N);
for i = 1:N
for j = 1:N
fun = besselj(0,k/f * W(i,j) * R) .* R .* exp(-(R/w0).^2);
A2(i,j) = trapz(y1,trapz(x1,fun));
end
end
A2 = abs(A2).^2;
imagesc(A2);
Output:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170109/image.png)
This method takes about 100 sec using N = 100. So for much beter resolution calculating takes a much more time. So I think that beter solution will be using 1D intensity distribution radius vector and create 2D matrix rotate in relation to the center. I dont find solution for that, so i created intensity distribution diameter vector and then i can use A' * A what i find in Matlab Answers. Need to change range from -a:a to 0:a and this same in rmax case. Code:
A = zeros(1,N);
for i = 1:N
fun = besselj(0,k/f * x1(i) * xx) .* xx .* exp(-(xx/w0).^2);
A(i) = trapz(fun);
end
A = [fliplr(A(2:end)) A];
A = abs(A).^2;
Output:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170110/image.png)
Using A = A' * A /2 I received:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170111/image.png)
My question: There is any option to improve radial symmetry in output image or maybe there is different method to create 2D matrix from vector?
0 comentarios
Respuestas (1)
Matt
el 10 de Feb. de 2018
Hey! Just a thought... Does resizing the figure window help?
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!