matlab画三维图如何进行变量范围设定?要求:R1<=根号下(x的平方+y的平方)<=R2

程序我是这样写的,不知道怎么设定sqrt(X.^2+Y.^2)的范围在【R1,R2】就直接没设定,所以做出来的图很奇怪,和原图不一样。

syms a b R1 R2;
a=60;
R1=13;
R2=100;
x=linspace(-100,100,100);
y=linspace(-100,100,100);
[X,Y] = meshgrid(x,y);
b=sqrt(X.^2+Y.^2);
Z =(R1-b).*(b-R2)./a;
subplot(1,2,1);
surf(X,Y,real(Z));
subplot(1,2,2);
imagesc(real(Z));

我做出来的图是这样的:

img


别人的图是这样的:

img

你好同学,你用极坐标转换画图就行啦(然后syms这一行给你删了,没啥用):

a=60;
R1=13;
R2=100;
theta = linspace(0,2*pi,100);%极角
r = linspace(R1,R2,100);%极径
[R,T] = meshgrid(r,theta);
X = R.*cos(T);
Y = R.*sin(T);
b=sqrt(X.^2+Y.^2);
Z =(R1-b).*(b-R2)./a;
subplot(1,2,1);
surf(X,Y,real(Z),'edgecolor','none');
colormap(jet)
subplot(1,2,2);
contourf(X,Y,real(Z),'edgecolor','none');
colormap(jet)
axis equal

效果:

img

如有帮助,还请题主给个宝贵的采纳支持一下答主哟,谢谢啦(づ ̄3 ̄)づ╭❤~