TurtleRock 发表于 2011-3-7 11:27

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

现有一个矩阵,然后由此矩阵用contour命令生成等高线,然后需要判断其中哪些线是直的,其中直的部分大概长度是多少,这个有没有好的方法,目前我只能靠看图来判断,太累了。
比如下图:

其对应的矩阵数据文件:

TurtleRock 发表于 2011-3-7 11:29

上图中,手动判断0.265-0.282间的曲线,是接近圆角正方形的,即有直线部分,这个能否通过程序判断?

ChaChing 发表于 2011-3-8 00:58

建议给齐1F代码, 不然还得花时间试!
还有请检查或说明下1F所给的数据, 怎无法直接load!?
另直线的準则为何?

TurtleRock 发表于 2011-3-8 15:35

本帖最后由 TurtleRock 于 2011-3-8 15:37 编辑

回复 3 # ChaChing 的帖子

sorry,昨天上传的数据有误,现在把直接保存的变量文件上传(data.mat),可以直接解压后load了

代码如下,这里没有设定等高线条数,因为这个可以根据情况调整的,也没有使用clabel标注数据:
load('data.mat')
xrange=linspace(-0.5,0.5,size(ff,2));
yrange=linspace(-0.5,0.5,size(ff,1));
=contour(xrange,yrange,ff);
axis equal;
axis([-0.5 0.5 -0.5 0.5]);

至于怎么判断是否直线,正是我想请教的内容
我想是不是可以通过设定一个容差范围,在这个范围内的可视为直线。或通过曲率等来判断?

ChaChing 发表于 2011-3-11 00:58

回复 4 # TurtleRock 的帖子

不同準则就有不同结果!
我想是可以通过设定一个容差范围, 或通过曲率等来判断!

happy 发表于 2011-3-11 16:45

这个问题的难度可能在于你的等值线数据如何提取出来?
建议先参阅contour的代码先把数据提取出来,然后再考虑如何判别的问题
判别只要判别准则选好了应该不会太难,比如你说的曲率等

ChaChing 发表于 2011-3-12 00:24

happy 发表于 2011-3-11 16:45 static/image/common/back.gif
这个问题的难度可能在于你的等值线数据如何提取出来?
建议先参阅contour的代码先把数据提取出来,然后再考 ...

不懂!
数据不是就在data.mat裡, 为何还需先参阅contour的代码先把数据提取出来?

TurtleRock 发表于 2011-3-13 13:34

这个问题的确比较难解啊,现在还是直线部分平行于x、y轴的情况,如果直线部分是斜线,就更难解了。
页: [1]
查看完整版本: 请教:如何判断由矩阵生成的等高线(等频线)哪个部分是直的