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

如何用散点画等高线?

[复制链接]
发表于 2009-11-14 14:49:55 | 显示全部楼层 |阅读模式 来自 LAN
我编了一个边界元程序。这个程序是先计算出一个物体边界上的值(比如位移,温度等)然后再求出内部点的值。 因此我得到的值的顺序就是先在外部一圈,然后再到内部。 问题是如何用这些散点画出contour?
再就是我感觉好像contour只能对x y的分布是呈矩阵形式(也就是不同行列的x y坐标数目都一样)的能够画出来,如果存在,比如说,两个不同列的x坐标数目不同,那么应该如何画等高线?
附上数据:
x=[-0.75 -0.5 -0.25 0 0.25 0.5 0.75;
0.75 0.75 0.75 0.75 0.5 0.25 0;
-0.25 -0.5 -0.75 -0.75 -0.75 -0.75 -0.5;
-0.5 -0.5 -0.25 -0.25 -0.25 0 0;
0 0.25 0.25 0.25 0.5 0.5 0.5];

>> y=[-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5;
-0.25 0 0.25 0.5 0.5 0.5 0.5;
0.5 0.5 0.5 0.25 0 -0.25 -0.25;
0 0.25 0.25 0 -0.25 -0.25 0;
0.25 0.25 0 -0.25 -0.25 0 0.25];

T=[50 0 0 0 0 0 0;
24.6056 50 75.3944 100 100 100 100;
100 100 50 50 50 50 32.7148;
49.9933 67.2165 73.8061 50.0002 26.1806 25.1165 49.9998;
74.8493 75.1215 50.0002 24.8653 24.7796 49.9933 75.1517];

上面x y的顺序是由外到内的顺序。T与之对应
发表于 2009-11-14 15:13:03 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
这个问题讨论过很多次了,可以参考此贴http://forum.simwe.com/thread-829558-1-1.html

既然你的数据是计算出来的,不是像实验得出的数据那么费事,那你就多计算出来一些点呗,规则点画contour图也好画。

另外,提问之前注意先搜索。
回复 不支持

使用道具 举报

发表于 2009-11-14 18:59:40 | 显示全部楼层 来自 广西桂林
最简单,换SURFER软件绘制等值线。直接网格化,免去用MATLAB插值再生成矩形网格的步骤
回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-15 11:58:53 | 显示全部楼层 来自 LAN
2# messenger 谢谢二楼。第一次发帖,没有搜索的习惯。以后会注意的。
现在还有一个问题。我的边界元程序现在算好了一个矩形(内部挖空)的温度场分布,但是画出来的等值线是如附件,原本内部一些区域(x:[-0,25,0.25]  y:[-0,25,0.25])本来是掏空的,但是Matlab却把所有的地方都填充了。不晓得有没有办法能画出空心的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-15 11:59:58 | 显示全部楼层 来自 LAN
3# shunfly 谢谢三楼。我已经在matlab里面实现了。呵呵
回复 不支持

使用道具 举报

发表于 2009-11-15 12:45:35 | 显示全部楼层 来自 浙江杭州
回复 不支持

使用道具 举报

发表于 2009-11-15 13:18:03 | 显示全部楼层 来自 重庆
4# citystrawman

温度场,流场,等值线,有没有试过用 tecplot 软件来画?10.0版本,很小巧,功能比较全

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-15 20:25:51 | 显示全部楼层 来自 LAN
6# messenger 恩。我看了。但是我有一个疑问就是,实际模型是一个挖空的矩形,如果我们在画图的时候是先在一个实心的矩形中进行拟合并画出等高线,再在空心的部分叠加一个白色的面,那么肯定与在空心的矩形中拟合并画出等高线的结果是不同的,当然就是不精确的。有没有对空心形状的面直接进行contour的方法呢?
回复 不支持

使用道具 举报

发表于 2009-11-15 20:34:52 | 显示全部楼层 来自 浙江杭州
应该没有这个问题吧。你说的这两种情况,在你进行边界元计算时就要分别考虑,计算完了得出结果以后,这些结果x、y、T已经与你说的计算形状有关了(不管是实心矩形还是空心矩形),画contour图只是一种表现手段,让人们易於观察,contour图怎么画与结果无关,你不能依靠contour图来修正结果。

所以,如果你的是空心矩形的话,你在进行边界元计算时就应引入内部边界,然后计算出内部边界点上的温度值,你不能指望contour命令能够给你定出边界的温度值来。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-15 21:06:14 | 显示全部楼层 来自 LAN
9# messenger 是啊 我是引入了内部边界的。的确像你说的那样,contour只是一种表现手段,但是我还是觉得把空心矩形的温度点通过实心矩形拟合做出contour的方法并不是特别好。这只能是一种不得已的方法。
回复 不支持

使用道具 举报

发表于 2009-11-15 21:28:45 | 显示全部楼层 来自 浙江杭州
不会的,理论上来说是正确的。不是拟合,是插值,只是画出了一部份没有必要画出的空心部份,另外的实心部份是正确的。如果说是不得已的方法,也只是在绘图时不得已这样,因为Matlab只能画矩形,不能画其他形状,但数据没有问题。所以你只能先画一个矩形,然后再覆盖。如果你有一个画图软件,比如 小畜 说的tecplot,直接能画不规则形状,你就可能直接画这个空心矩形的contour图了,但四周实心部份所用的数据,还是原来那些和Matlab画实心矩形contour图一样的数据。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-15 21:43:43 | 显示全部楼层 来自 LAN
11# messenger 原来如此啊。那如果我的空心部分是不规则图形(而且有多个挖空的地方)那能否用matlab呢?


谢谢啦!
回复 不支持

使用道具 举报

发表于 2009-11-15 21:48:14 | 显示全部楼层 来自 浙江杭州
本帖最后由 messenger 于 2009-11-17 18:07 编辑

应该没问题,只是画图时麻烦一些,需要多patch几次。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 15:44 , Processed in 0.052493 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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