When this code is executed, 36 separate windows will open. I want the result to be displayed in a window.
2 次查看(过去 30 天)
显示 更早的评论
I want the output to be similar to this image.
0 个评论
采纳的回答
David Goodmanson
2024-4-21
编辑:David Goodmanson
2024-4-22
Hi Babr, I think this is basically what is intended, taking the plot out of the for loop.
close all; clear; clc
N = 2048;
L = 1e4;
dx = 4e-3;
[x0,y0] = meshgrid((-N/2:N/2-1)*dx);
[xL,yL] = meshgrid((-N/2:N/2-1)*dx);
[fx,fy] = meshgrid((-N/2:N/2-1)/(N*dx));
Ni = 36;
xi= 1e-2 .*[-62.5,-62.5,-62.5,-62.5,-62.5,-62.5,-37.5,-37.5,-37.5,-37.5,-37.5,-37.5,...
-12.5,-12.5,-12.5,-12.5,-12.5,-12.5,12.5,12.5,12.5,12.5,12.5,12.5,37.5,37.5,37.5,37.5,37.5,37.5,...
62.5,62.5,62.5,62.5,62.5,62.5,];
yi= 1e-2 .*[62.5,37.5,12.5,-12.5,-37.5,-62.5,62.5,37.5,12.5,-12.5,-37.5,-62.5,62.5,37.5,12.5,-12.5,-37.5,-62.5,...
62.5,37.5,12.5,-12.5,-37.5,-62.5,62.5,37.5,12.5,-12.5,-37.5,-62.5,62.5,37.5,12.5,-12.5,-37.5,-62.5,];
w0 = 10e-2;
P = 1e3;
lambda = 1080e-9; k = 2*pi/lambda;
L0= 10; l0= 5e-3;
kL= 2.*pi./L0; kl= 5.92./l0;
Cn2= randi(1,60)*1e-16;
Kx = 2.*pi.*fx; Ky = 2.*pi.*fy;
U0= 0*x0;
for idx=1:Ni
Utemp = sqrt(2.*P./pi)./w0 .* exp(-((x0-xi(idx)).^2+(y0-yi(idx)).^2)./w0.^2);
Utemp(((x0-xi(idx)).^2+(y0-yi(idx)).^2)>w0.^2) = 0;
U0 = U0 + Utemp;
end
figure(1)
s = pcolor(x0, y0, abs(U0));
s.EdgeColor = 'none';
title("0^{th} Intenesity screen")
xlabel 'X [m] '
ylabel 'Y [m] '
cbar = colorbar;
cbar.Label.String = 'Intensity(X, Y, 0) [W/cm^2]';
ax = gca;
axis square
ax.FontName = 'Times new roman';
ax.FontSize = 15;
3 个评论
David Goodmanson
2024-4-22
编辑:David Goodmanson
2024-4-22
Hello Babr, the modified answer now incorporates that feature, although it might be preferable to just construct peaks with a smaller w0 in the first place. That way the data will not have intentional discontinuities.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!