声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1455|回复: 2

[图像处理] matlab中为什么用surf函数画不了图形?求指教

[复制链接]
发表于 2014-5-13 15:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 牛小贱 于 2014-5-13 18:37 编辑

程序:
  1. x=xlsread('d:drawing data1.xls','A2:A337');y=xlsread('d:drawing data1.xls','B2:B337');zu=xlsread('d:drawing data1.xls','C2:C337');
  2. surf(x,y,zu)
复制代码
错误提示:Warning: Matrix dimensions must agree, not rendering mesh.
回复
分享到:

使用道具 举报

发表于 2014-5-13 18:44 | 显示全部楼层
surf的参数要求必须是“网格”形式的。也就是说这些数据点必须分布在MxN的矩形网格的交点上。如果你的x是向量形式,通常都不满足这个条件,所以要用griddata函数或meshgrid函数从已知的K个点中插值出MxN个点,然后才能用surf作图。具体方法可以请参见这些函数的帮助。
举例说明:如果你的向量不能转存成这种格式
x = [ 1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5]
y = [1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5]
即x的所有行相同,y的所有列相同,那就不可以。如果你当初创建x,y,z时没有这个网格概念,那么创建出来的xyz多半是不可以直接转化的。
另外,surf是绘制曲面的,而且是网格曲面。你的离散数据应该用scatter3或者plot3

评分

1

查看全部评分

发表于 2014-5-23 17:48 | 显示全部楼层
你的x,y,z都是一维向量是画不出来三维图的。x,y可以用meshgrid生成网格数据,但是z确实没办法了,你应该读到的就是个二维矩阵才对。

评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-1 13:16 , Processed in 0.060408 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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