![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
matlab中如何利用matlab绘制一个三维立体图?
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我按照上面的写法绘出来是二维的,三维的怎么绘呢,请教大神 展开
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、完善代码后运行可以得到想要的图形。详细代码可以另给。
在上面的例子里 如果变量x y z都是一一对应的(x的data长度和y z都相同)那么可以直接用plot3(x,y,z)来plot
如果只想有点还可以scatter3(x,y,z)
当然如果需要的三维图是带有surface或者patch类元素的 可以使用surf 或是其他patch类函数。
本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!