matlab中如何利用matlab绘制一个三维立体图?

如上图,其中a、b、β1、β2、tmax均已知,其中y的取值范围是和x相关的。请问一下大佬,类似这上面的图形怎么绘制啊?最终图应该是第三张图中那样。for x=-170:1:170 y=-50*sqrt(1-(x).^2⼀170^2):1:50*sqrt(1-(x).^2⼀170^2); z =40*(((1-(x).^2⼀170^2).^1.56)+eps).*((1-(y).^2⼀(50^2*(1- (x).^2⼀170^2))).^2.36+eps); plot(y,z); hold on end我按照上面的写法绘出来是二维的,三维的怎么绘呢,请教大神
2026年09月27日 14:08
有3个网友回答
网友(1):

matlab中如何利用matlab绘制一个三维立体图?运行题主给出的代码不能出三维图形,其原因:

1、使用命令错误,绘制三维图形的函数,应该用plot3、surf、mesh等函数。

2、没有根据下列不等式条件来取值,即

-a≤x≤a;-b*sqrt(1-x^2/a^2≤y≤b*sqrt(1-x^2/a^2)

问题的意思是,要绘制当x为任意值范围【-x0(i),x0(i)】时对应的y值范围【y1(i),y2(i)】的三维图形。

解决方案:

1、取x0=linspace(-a,a,100)中的任意值,即x0(i)

2、取y0=y1,y2中的任意值,即y1(i),y2(i)

这里,

y1=-b*sqrt(1-x0.^2/a^2);

y2=b*sqrt(1-x0.^2/a^2);

3、在x【-x0(i),x0(i)】和y 【y1(i),y2(i)】之间,进行划分若干个等份,即

x=linspace(-x0(i),x0(i),100);

y=linspace(y1(i),y2(i),100);

4、使用 meshgrid函数,对(x,y)数据网格化,即

[X,Y] = meshgrid(x,y);

5、计算Z值,即

Z =40*(((1-X.^2/170^2).^1.56)).*((1-Y.^2/(50^2*(1- X.^2/170^2))).^2.36)

6、使用plot3函数绘制三维曲线,即

plot3(X,Y,Z)

7、使用hold on命令,将任意的X,Y,Z对应的图形重复绘制在同一图窗中。

8、完善代码后运行可以得到想要的图形。详细代码可以另给。

网友(2):

3D plot在Matlab里面有很多种。最简单的是3D line plot:
在上面的例子里 如果变量x y z都是一一对应的(x的data长度和y z都相同)那么可以直接用plot3(x,y,z)来plot
如果只想有点还可以scatter3(x,y,z)
当然如果需要的三维图是带有surface或者patch类元素的 可以使用surf 或是其他patch类函数。

网友(3):

本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!