声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2800|回复: 7

[编程技巧] 请教:如何判断由矩阵生成的等高线(等频线)哪个部分是直的

[复制链接]
发表于 2011-3-7 11:27 | 显示全部楼层 |阅读模式

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

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

x
现有一个矩阵,然后由此矩阵用contour命令生成等高线,然后需要判断其中哪些线是直的,其中直的部分大概长度是多少,这个有没有好的方法,目前我只能靠看图来判断,太累了。
比如下图:
efc.jpg
其对应的矩阵数据文件:
data.txt (98.22 KB, 下载次数: 3)

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2011-3-7 11:29 | 显示全部楼层
上图中,手动判断0.265-0.282间的曲线,是接近圆角正方形的,即有直线部分,这个能否通过程序判断?
发表于 2011-3-8 00:58 | 显示全部楼层
建议给齐1F代码, 不然还得花时间试!
还有请检查或说明下1F所给的数据, 怎无法直接load!?
另直线的準则为何?
 楼主| 发表于 2011-3-8 15:35 | 显示全部楼层
本帖最后由 TurtleRock 于 2011-3-8 15:37 编辑

回复 3 # ChaChing 的帖子

sorry,昨天上传的数据有误,现在把直接保存的变量文件上传(data.mat),可以直接解压后load了
data.mat.rar (6.26 KB, 下载次数: 2)
代码如下,这里没有设定等高线条数,因为这个可以根据情况调整的,也没有使用clabel标注数据:
load('data.mat')
xrange=linspace(-0.5,0.5,size(ff,2));
yrange=linspace(-0.5,0.5,size(ff,1));
[C,h]=contour(xrange,yrange,ff);
axis equal;
axis([-0.5 0.5 -0.5 0.5]);

至于怎么判断是否直线,正是我想请教的内容
我想是不是可以通过设定一个容差范围,在这个范围内的可视为直线。或通过曲率等来判断?
发表于 2011-3-11 00:58 | 显示全部楼层
回复 4 # TurtleRock 的帖子

不同準则就有不同结果!
我想是可以通过设定一个容差范围, 或通过曲率等来判断!
发表于 2011-3-11 16:45 | 显示全部楼层
这个问题的难度可能在于你的等值线数据如何提取出来?
建议先参阅contour的代码先把数据提取出来,然后再考虑如何判别的问题
判别只要判别准则选好了应该不会太难,比如你说的曲率等
发表于 2011-3-12 00:24 | 显示全部楼层

不懂!
数据不是就在data.mat裡, 为何还需先参阅contour的代码先把数据提取出来?
 楼主| 发表于 2011-3-13 13:34 | 显示全部楼层
这个问题的确比较难解啊,现在还是直线部分平行于x、y轴的情况,如果直线部分是斜线,就更难解了。

点评

赞成: 5.0
赞成: 5
Yes & case by case  发表于 2011-3-13 15:06
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 10:56 , Processed in 0.103240 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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