Matlab 用空心曲面表示山的方程

Matlab 用空心曲面表示山的方程,matlab,math,plot,distribution,Matlab,Math,Plot,Distribution,我想使用函数,其中x和y是形成圆的坐标,z(x,y)从边缘的0增长到R/2的最大值,再返回到中心的0,没有急剧变化。我和一个朋友发生口吃 t = -pi:pi/180:pi; R = 5; x = R*cos(t); y = R*sin(t); for i = 1:361 for j = 1:361 z(i,j) = exp( sqrt((x(i)).^2 + (y(j)).^2)); end end [u, v] = meshgrid(x, y); mesh(u, v, z

我想使用函数,其中x和y是形成圆的坐标,z(x,y)从边缘的0增长到R/2的最大值,再返回到中心的0,没有急剧变化。我和一个朋友发生口吃

t = -pi:pi/180:pi;
R = 5;
x = R*cos(t);
y = R*sin(t);

for i = 1:361
  for j = 1:361
     z(i,j) = exp( sqrt((x(i)).^2 + (y(j)).^2));
  end
end
[u, v] = meshgrid(x, y);
mesh(u, v, z), grid on;

我应该如何认识到z将这一滴添加到中间?任何建议,谢谢

可能减去两个标准偏差不同的二维高斯

% the area
x = linspace(-5,5,1E2);
y = linspace(-5,5,1E2);

sig1=1;
sig2=2;

%2D gaussian
efac = 1/(2*sig1);
X   = exp(-efac*x.^2);
Y   = exp(-efac*y.^2)';
z1    = Y*X;
z1=z1./max(z1(:));

%2D gaussian
efac = 1/(2*sig2);
X   = exp(-efac*x.^2);
Y   = exp(-efac*y.^2)';
z2    = Y*X;
z2=z2./max(z2(:));

[u, v] = meshgrid(x, y);
mesh(u, v, z2-z1), grid on;

一个在R之外为零且更符合您自己代码的替代方案:

x = linspace(-2*pi,2*pi,1E2);
y = linspace(-2*pi,2*pi,1E2);
[u, v] = meshgrid(x, y);
r = sqrt(u.^2+v.^2);
z = sin(r);
z(r>pi)=0;

mesh(u, v, z), grid on;

或者让它在底部不那么锋利:

z = sin(r).^2;

可能减去两个标准偏差不同的二维高斯数

% the area
x = linspace(-5,5,1E2);
y = linspace(-5,5,1E2);

sig1=1;
sig2=2;

%2D gaussian
efac = 1/(2*sig1);
X   = exp(-efac*x.^2);
Y   = exp(-efac*y.^2)';
z1    = Y*X;
z1=z1./max(z1(:));

%2D gaussian
efac = 1/(2*sig2);
X   = exp(-efac*x.^2);
Y   = exp(-efac*y.^2)';
z2    = Y*X;
z2=z2./max(z2(:));

[u, v] = meshgrid(x, y);
mesh(u, v, z2-z1), grid on;

一个在R之外为零且更符合您自己代码的替代方案:

x = linspace(-2*pi,2*pi,1E2);
y = linspace(-2*pi,2*pi,1E2);
[u, v] = meshgrid(x, y);
r = sqrt(u.^2+v.^2);
z = sin(r);
z(r>pi)=0;

mesh(u, v, z), grid on;

或者让它在底部不那么锋利:

z = sin(r).^2;

不会像OP希望的那样在边缘为零。新版本更合你的意吗?不会像OP所希望的那样是零。新版本更合你的意吗?