找回密码
 注册
Simdroid-非首页
查看: 197|回复: 6

如何使用已有数据进行contour绘图

[复制链接]
发表于 2008-4-30 10:58:35 | 显示全部楼层 |阅读模式 来自 韩国
现有矩阵i(2000*3), x=i(:,1),y=i(:,2),z=i(:,3),[c,h]=contour(x,y,z),但是只出现了空白的坐标系,为什么contour图像没有出来呢,请高人指教
发表于 2008-4-30 11:08:23 | 显示全部楼层 来自 韩国
Simdroid开发平台
我就喜欢回答这样的问题,这是我第四次给出基本相同的answer,我选择我喜欢,‘回复,非一般的感觉’
a = [0 0 5
0 1 7.5
3 2 10
0 3 7.5
0 4 5
2 3 7.5
1 1 8
1 2 12
1 3 4.5
1 4 5
2 0 15
4 1 9.5
4 2 10
1 0 5
2 4 6
3 0 9
3 1 6
0 2 10
3 3 5.5
3 4 8.5
4 0 6.5
2 1 12.5
2 2 8
4 3 6
4 4 5.5];
x = a(:,1);y=a(:,2);z=a(:,3);
[X,Y] = meshgrid(0:0.1:4);
Z = griddata(x,y,z,X,Y,'cubic');
surfc(X,Y,Z);

[ 本帖最后由 semeng 于 2008-4-30 11:09 编辑 ]
回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-30 11:23:42 | 显示全部楼层 来自 韩国
大哥。。。我要的是平面contour...不是3D的,而且我的原始数据相当的多,大概2000多行,应该不需要(0:0.1:4)这样的命令吧
回复 不支持

使用道具 举报

发表于 2008-4-30 13:30:43 | 显示全部楼层 来自 湖北武汉
MATLAB的Contour很弱,没有提供数据网格化功能,因此其绘制需要的[X Y Z]应该是网格化数据.
PS:i为MATLAB中的默认虚数单位,变量名尽量不要起这个名字。
Contour有两种用法,一种是直接法,一种是给出法
直接法:
  1.                Z = peaks;Z(:,10:35)=[];
  2.                contour(Z)
  3.          
复制代码
注意size(Z),和图的坐标轴范围

给出法:
         contour(X,Y,Z),X,Y,Z一一对应
回到你的问题,请查看你的I矩阵的第一列和第二列,是否是一个网格,所谓的网格,即数据应该满足如下方式:
[ 1     3.4
  2.1  2
  1     2
  2.1  3.4],
x = [1 2.1]
y = [2 3.4];
如果是,那么恭喜你,用UNIQE函数得到x,y,再[X,Y]=meshgrid(x,y)
再用griddata生成Z,或者自己利用I矩阵排序归类成Z

如果不是网格化数据,那么,要么自己插值成网格,这不推荐。要么,换强大的
Surfer软件

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-30 15:31:13 | 显示全部楼层 来自 韩国
尊敬的斑竹,为什么要用UNIQUE函数呢,我的X,Y,Z都是已知且数目一样的(12165行,3列),请再指点我一下,谢谢
回复 不支持

使用道具 举报

发表于 2008-4-30 21:42:13 | 显示全部楼层 来自 湖北武汉
哎。。。一大段字都白写了
回复 不支持

使用道具 举报

发表于 2010-5-28 09:02:59 | 显示全部楼层 来自 上海
插值用什么方法呢?
surf与contour有什么区别啊
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-27 20:49 , Processed in 0.045003 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表