yibao128 发表于 2016-5-3 14:13

matlab怎样画四维图

已知空间点(x,y,z)上对应的函数值f(x,y,z),如何画出其等势面?如图所示那样的,用颜色表示f(x,y,z)

yibao128 发表于 2016-5-3 14:19

只知道函数值,不知道函数关系

jiangwj 发表于 2016-5-3 16:17

试一下看看吧
clear all
= meshgrid(0:.5:10,0:.5:10,0:.5:10);
c = x.^2+y.^2+z.^2;
xs = ;
ys = ;
zs = ; % xs,ys,zs可决定切片形式和位置,help slice可明白其具体含义
slice(x,y,z,c,xs,ys,zs)
colormap hsv
%%%=================================%%%

当然,只要doc surf, 就会发现,其实surf命令已经自带了颜色命令:
举一个简单例子如下(颜色向量看实际问题可以改变,以表示函数值):
%%%=================%%%
clear all
=meshgrid(0:.5:10);
c = rand(21);
Z=X^2-5*X.*Y+Y.^2;
surf(X,Y,Z,c);

yibao128 发表于 2016-5-3 19:32

jiangwj 发表于 2016-5-3 16:17
试一下看看吧

谢谢回复
不过不想要切片图,而且要画的等值面是一般是密闭的,如图所示那样。
今天下午看论坛里面介绍isosurface,但是不知道如何设置能够画出多个等值面。你知道吗?再次感谢

jiangwj 发表于 2016-5-4 08:22

yibao128 发表于 2016-5-3 19:32
谢谢回复
不过不想要切片图,而且要画的等值面是一般是密闭的,如图所示那样。
今天下午看论坛里面介绍 ...

应该不能用surf命令吧

jiangwj 发表于 2016-5-4 08:24

画散点图,试试再
>> scatter3(A(:,1),A(:,2),A(:,3),14,256*((A(:,4))-min(A(:,4)))/(max(A(:,4)-min(A(:,4)))))
>> colorbar

yibao128 发表于 2016-5-4 20:53

jiangwj 发表于 2016-5-4 08:22
应该不能用surf命令吧

不知道啊,我现在x,y,z和f都是m*n*p的数组,用不了surf。我看看转换成M*N维后试试看结果

yibao128 发表于 2016-5-4 20:53

jiangwj 发表于 2016-5-4 08:24
画散点图,试试再

谢谢,我试试看!{:3_53:}

jiangwj 发表于 2016-5-5 08:30

yibao128 发表于 2016-5-4 20:53
谢谢,我试试看!

咋样啦?

yibao128 发表于 2016-5-6 19:33

jiangwj 发表于 2016-5-5 08:30
咋样啦?

我现在用isosurface能画出类似的

jiangwj 发表于 2016-5-7 08:32

yibao128 发表于 2016-5-6 19:33
我现在用isosurface能画出类似的

画出来就好最好把相关的经验跟大家分享一下谢谢啦

yibao128 发表于 2016-5-9 21:13

jiangwj 发表于 2016-5-7 08:32
画出来就好最好把相关的经验跟大家分享一下谢谢啦

就是类似的图,但是感觉没有人家的分辨率高,不那么光滑……我看看吧网格弄密点效果怎么样!谢谢你的热心帮助!!

jiangwj 发表于 2016-5-10 08:33

yibao128 发表于 2016-5-9 21:13
就是类似的图,但是感觉没有人家的分辨率高,不那么光滑……我看看吧网格弄密点效果怎么样!谢谢你的热心 ...

你的数据点太少,可以尝试一下插值,双三次样条插值,曲面很光滑
页: [1]
查看完整版本: matlab怎样画四维图