How to normalize plot?
6 次查看(过去 30 天)
显示 更早的评论
How to normalize the plot to one?
clc;clear all;close all;
syms x y
x0 = -.02:0.001:.02;lambda=532*10^-9;
y0 = -.02:0.001:.02;w0 = 0.002;
omegax=1;omegay=2;zr=pi*w0^2/lambda;
m = 2;
s=1;k=0.0002;Rx=zr;Ry=Rx;
[X0,Y0] = meshgrid(x0,y0);
f = @(x0,y0)sinh((omegax*x0+omegay*y0)/w0).*exp(-(x0.^2+y0.^2)/w0^2).*(x0+(1i*s.*y0)).^m.*exp((1i*k/2)*((x0^2/Rx)+(y0^2/Ry)));
I_numerical = real(abs(vpa(f)));
figure
fcontour(real(I_numerical), [-1 1 -1 1]*1E-2, 'Fill','on', 'MeshDensity',150)
colormap('hot');
colorbar('vert');
axis('equal')
0 个评论
回答(1 个)
Torsten
2023-5-4
x0 = -.02:0.001:.02;lambda=532*10^-9;
y0 = -.02:0.001:.02;w0 = 0.002;
omegax=1;omegay=2;zr=pi*w0^2/lambda;
m = 2;
s=1;k=0.0002;Rx=zr;Ry=Rx;
[X0,Y0] = meshgrid(x0,y0);
f = @(x0,y0)sinh((omegax*x0+omegay*y0)/w0).*exp(-(x0.^2+y0.^2)/w0^2).*(x0+(1i*s.*y0)).^m.*exp((1i*k/2)*((x0^2/Rx)+(y0^2/Ry)));
Z0 = arrayfun(@(x,y)f(x,y),X0,Y0);
contourf(X0,Y0,real(abs(Z0))/max(real(abs(Z0(:)))))
colormap('hot');
colorbar('vert');
axis('equal')
6 个评论
Torsten
2023-5-4
Then arrange your code such that I_numerical has size 500x500 since x has 500 elements and y has 500 elements.
At the moment, I_numerical has size 1x500.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Line Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!