用MATLAB,给出三维点的空间坐标和每个点的颜色,怎样绘制三维面,不要网格,我用surf函数得到了下面的图片,怎样把网格去掉,并且贴上颜色啊?大神?
加上一句 shading interp;
解决问题,保证OK!
在你surf以后
不要忘了采纳哟。
追问用C贴上点的颜色时就不能用这句代码了,不知道为什么
surf(x,y,z,c)
追答你好,首先你要确保你的x,y,z,能够用surf画出图来。
然后 c是一个列向量,长度和x的行数一致。
然后就可以用surf(x,y,z,c)了。
然后加上我之前写的那句。
就能够出来结果,我就采用的这种方法出来了上面的那个图。
怎样把每个点的颜色加到图片上啊!
一直搞不定。。。。
追答你的c矩阵多大?是不是列向量?有没有确切的数值?
追问151*151
小x是每个点的横坐标组成的向量
追答这个当然采用 surf画不出来了。
surf(x,y,z,c)
其实第四维的那个c值只可能是个列向量,表示的是空间 (x,y,z)点处对应的值。
每个点对应一个值?
那我需要把RGB信息集成到一个值里面吧
这个用什么转换呢?
追答请问你的那个颜色是对应的什么值?你就那我那个来说,我的第四维就表示的是温度。用颜色表示的是空间某个点的温度
追问就是把RGB三个值表示的颜色用一个值表示
追答不是这个意思。。
如果你的第四维没有任何物理意义的话,就不要搞第四维,用surf(x,y,z)就可以画出图了,其中颜色表示的就是z值的大小。
另外你的151*151是从哪里来的呢?
或许是我没有理解你的题意。
第四维表示颜色信息
我在还原三维像
得到的是很多点的空间坐标和RGB颜色值
把空间坐标形成图像,再把颜色附上去
得到带颜色的立体图
就是怎样附颜色这块搞不定
怎样贴上每个点的颜色呀!
用surf(x,y,z,c)贴颜色就不知道怎么去掉网格了
追答surf(x,y,z,c,'edgecolor','none');
追问这样运行就不出图了,很奇怪
这是一部分代码
追答看你代码好像没有什么问题
X,Y,Z,C都是大小相等的矩阵吗?
C的内容正常吗?
你的plotxyz里面的坐标数据不是整数吧?
你将plotxyz的数据作为矩阵a1的下标没有问题吗?
不是整数,C需要是向量吧
追答不是,C可以是跟X,Y,Z大小一样的矩阵
你看看C数据有没有不正常,里面的数据不是nan?
如果plotxyz是小数,那么
a1(plotxyz(i,1),plotxyz(i,2),1)
不会报错吗?
不会报错,是不是C中的每一个值对于一个点的颜色啊!
追答是啊,C中的值和曲面网格一一对应
如果X,Y,Z,C都没有问题,没有理由画不出图
随便用两句程序就能都画出带颜色不带网格的曲面图
[X Y]=meshgrid(1:10,1:10);
Z=exp(-((X-5).^2+(Y-5).^2)/10);
C=rand(10);
surf(X,Y,Z,C,'edgecolor','none');
你可以试试,这里X,Y,Z,C都是10*10的矩阵
好的
本回答被提问者采纳