teleiwei 发表于 2009-4-27 10:39

matlab是否可以根据导入的外部数据直接生成应力云图

已知单元编号、单元节点编号、单元节点坐标、单元节点应力,由于单元以及单元节点数量庞大,大约12万个左右,所以将其储存在excel文件或Access数据库中。请问matlab是否可以将这样的数据直接导入然后生成应力云图。
我一直没有用过matlab,因为所学到的专业内的软件无法做到这点,所以想尝试一下。请高手帮助解答,不胜感激!谢谢!

sogooda 发表于 2009-4-27 20:36

回复 楼主 teleiwei 的帖子

内力云图,从数学的角度来看就是等高线图,等高线图可以参考contour,contourf命令的帮助。
excel导入matlab可以使用xlsread命令,自己参看以下帮助文档吧。

ChaChing 发表于 2009-4-27 20:48

楼主的单元节点应力怎得到的? NASTRAN或ANASYS或...
这些软件不是就可直接输出楼主要的图吗?
好奇, 干嘛绕一大圈?

teleiwei 发表于 2009-4-28 11:20

回复 沙发 sogooda 的帖子

感谢您的帮助,有道理,我会仔细研究一下的。之前没接触过matlab,刚开始,所以还不明白如何使用,要下点功夫才行

teleiwei 发表于 2009-4-28 11:26

回复 ChaChing 的帖子

是由sap2000得到的。我将几个模型用spa2000运算分析后将单元应力结果分别输出,然后进行了叠加,叠加后的应力结果无法再导回sap2000中直接出云图。因为sap2000只能生成自己运算后的结果对应的云图,外部导入的数据要经过重新运算才行,但这样又把我导入的数据冲掉了。所以现在看来sap、ansys等这类软件可能无法直接由外部数据直接出云图,无法直接到达后处理这步。所以我必须寻求其他方法

vincentsuen 发表于 2009-4-28 11:44

http://forum.vibunion.com/forum/redirect.php?tid=80404&goto=lastpost

[ 本帖最后由 ChaChing 于 2010-7-4 23:29 编辑 ]

sogooda 发表于 2009-4-28 14:26

回复 6楼 vincentsuen 的帖子

其他的形状(比如圆)也可以使用方形图形的等高线表示啊,只是没有图形的地方(圆的外部)颜色设置成一样的就可以了。
btw:你绘图用的是contourf,而不是contour。

[ 本帖最后由 sogooda 于 2009-4-28 14:27 编辑 ]

teleiwei 发表于 2009-4-29 22:55

向sogooda和vincentsuen求助!谢谢!

按两位说的试了一下,但因为之前对计算机语言不通,也没用过MATLAB,所以短时间内还是没有搞定,:'( 急啊!不过还在尝试中!
想麻烦两位,可否帮我写一下代码,过了这关后我会继续学习使用MATLAB的。
数据中的节点虽然是三维坐标定位,但是都处于同一平面,所以可以认为Z=0,也就是二维的。但单元节点坐标和单元节点应力分放在两个excel文件中,需要分别读入,并且数量很大。我的问题似乎主要出在导入这步。如何和前后的代码衔接?
摆脱两位,先谢谢两位了!
还有就是,每个节点是四个单元(板中部的节点)和两个单元(板边上的节点)共用,这样的话每个节点不是只有一个应力值,但应力值的绝对值应该相近,这在生成应力图时如何处理?我的单元应力的数据中,大部分节点是重复出现四次并对应四个值,另外一些出现两次对应两个值。

[ 本帖最后由 ChaChing 于 2010-7-4 23:28 编辑 ]

sigma665 发表于 2009-4-30 11:08

回复 8楼 teleiwei 的帖子

help xlsread
也可以搜索精华帖

sogooda 发表于 2009-4-30 20:45

回复 9楼 teleiwei 的帖子

平均应该就可以了吧。

teleiwei 发表于 2009-5-12 16:59

我的数据储存在E盘的“joint and stress.xls”文件中。数据共31752行,3列。第一列为x坐标,第二列为y坐标,第三列为应力值。
A=xlsread('E:\joint and stress.xls')
x=A(1:31752,1)
y= A(1:31752,2)
z= A(1:31752,3)
这三句好像可以运行,但是一加入
contourf(x,y,z,20)就不行了

运行后显示:
Error: Missing operator, comma, or semicolon

friendchj 发表于 2009-5-12 20:17

contourf(Z) draws a contour plot of matrix Z, where Z is interpreted as heights with respect to a plane. Z must be at least a 2-by-2 matrix that contains at least two different values.
不知道你的错误提示由什么引起的,但contourf要求Z至少是一个2*2的矩阵

teleiwei 发表于 2009-5-13 16:45

回复 14楼 friendchj 的帖子

谢谢您的提醒!也就是说我不可以直接按照坐标进行类似散点的作图。必须要用网格生成,确定了x,y的维数,然后将应力结果按照其对应节点的坐标重新排布成一个矩阵,才可以使用contourf函数。不可以直接从表里分别读入x,y坐标值和应力值来做,是吗?

friendchj 发表于 2009-5-13 17:53

回复 15楼 teleiwei 的帖子

关键在于z,help griddata
页: [1]
查看完整版本: matlab是否可以根据导入的外部数据直接生成应力云图