如何利用三维数据画三维网格图
数据是(x,y,z)形式的,想利用这些数据画三维网格图,看了论坛中的一些帖子,也没有解决我的问题,特来求助。(数据在附件中)[ 本帖最后由 eight 于 2007-12-17 21:10 编辑 ] 绘图技巧讨论很多了,不知你的问题哪里比较特殊? 总是出错,不知为何?
回复 #3 小妮妮 的帖子
出什么样的错把出错提示贴上来 对于一组坐标的情形,直接用mesh肯定出错。我替楼主把错误帖出来吧:
??? Error using ==> set
View must be a two element vector.
Error in ==> mesh at 128
set(cax,'View',y);
Warning: Z must not be a scalar or vector, not rendering surface.
Warning: Z must not be a scalar or vector, not rendering surface.
Warning: Z must not be a scalar or vector, not rendering surface.
Warning: Z must not be a scalar or vector, not rendering surface.
原因:mesh绘制网格图的时候要求z必须是二维的矩阵,x和y是不是都可以。
这个问题的特殊特殊的地方就是给的是xyz坐标向量,并不是个平面的矩阵。本该最适合用plot3,但是它绘制的又是线图,怎么办呢?虽然以前版面没有没有讨论过完全一样的,但是三维绘图的讨论还是很多的。仔细琢磨下是可以解决的:a=load('m.txt');
fill3(a(:,1),a(:,2),a(:,3),rand(1,36));%如果需要特殊填充的网格,自己再想办法
hold on;
plot3(a(:,1),a(:,2),a(:,3),'b*');上边提供一种解决的思路,不一定能完全满足楼主的需求,但是希望可以有所启发。
[ 本帖最后由 花如月 于 2007-12-17 20:14 编辑 ] 我也试用plot3画三维图,但是如楼上所说它画出的是线图,不是网格图,一直很困扰
回复 #6 小妮妮 的帖子
fill3不能满足你的要求么? fill3不能满足我的要求,我想用matlab画一个和origin画三维图中color fill surface 功能一样的图形(附件),因为觉得matlab画的三维图比origin漂亮,但是真的不知道该如何解决我的问题,请高手明示!回复 #8 小妮妮 的帖子
这样的图只能用mesh绘制,也就是说你的X和Y必须能构成平面网格。你给的坐标点无法满足这样的要求,除非添加坐标点 这个问题以前讨论过,可搜索一下论坛.提示: 用griddata即可.
我画了一下图,你作个参考吧,网格疏密可以自己调节。
回复 #10 xjzuo 的帖子
:victory: griddata果然行,跟着学习了 谢谢xjzuo,问题解决了。 怎么实现啊!我时刻初学者,有代码没有?回复 13楼 初学者007 的帖子
将10F的代码补齐!a=load('m.txt'); x=a(:,1); y=a(:,2); z=a(:,3);
=meshgrid(min(x):max(x), min(y):max(y));
zz = griddata(x,y,z,xx,yy);
mesh(xx,yy,zz), hold
plot3(x,y,z,'o'), hold off 网上出现的gridfit效果要比griddata更好 可以一试
页:
[1]
2