| 查看: 3239 | 回复: 22 | |||||
| 【奖励】 本帖被评价6次,作者monowolf增加金币 3.75 个 | |||||
| 当前主题已经存档。 | |||||
[资源]
电荷密度图等高线的作法
|
|||||
|
这是我师兄编的MATLAB程序用来处理MS电荷密度的等高线做法,分四步: 1.找到电荷密度图的存储文件,一般是在自己所建的计算project中,隐藏的,castep模块是.charg_frm格式的,可以用txt打开后另存为txt格式。 2.读取数据,在matlab命令里输入以下命令: [path,fn]=uigetfile('*.txt','Open'); fp=fopen([fn,path],'r'); head=fscanf(fp,'%s',4); data=fscanf(fp,'%f',[4,18*18*144]); fclose(fp); 这是读取刚才保存的txt数据的,其中18*18*144是可以改的,分别对应a,b,c的重复单元。 3.作矩阵。 a=reshape(data(1, ,[18,18,144]);b=reshape(data(2, ,[18,18,144]);c=reshape(data(3, ,[18,18,144]);d=reshape(data(4, ,[18,18,144]);其中18*18*144是可以改的,分别对应a,b,c的重复单元,即长宽高的值。 4.作等高线图 layer=1; contour(reshape(a(:,layer, ,[18,144]),reshape(c(:,layer, ,[18,144]),reshape(d(:,layer, ,[18,144]),8);layer=1(2,3,4....) 可以修改作图的层数,分别是从前面到后面。最后的8表示显示线条数目,可以自己修改成9,10或其它。 hold on 表示累积作图,hold off表示清空前面的 作图 举例;做表面层和第九层的等高线图 >> layer=9; contour(reshape(a(:,layer, ,[18,144]),reshape(c(:,layer, ,[18,144]),reshape(d(:,layer, ,[18,144]),8);>> hold on >> layer=1; contour(reshape(a(:,layer, ,[18,144]),reshape(c(:,layer, ,[18,144]),reshape(d(:,layer, ,[18,144]),8);这是沿侧面做等高线(即xz平面),其它方向作图类似。只要修改其中的参数就可以了,如把a(:,layer, ,[18,144]),reshape(c(:,layer, ,[18,144]),reshape(d(:,layer, ,[18,144]),8);改为a(layer,:, ,[18,144]),reshape(c(layer,l:, ,[18,144]),reshape(d(layer,:, ,[18,144]),8);欢迎大家指点。上传附件为样本数据和上述作图txt文档。 特别感谢师兄Mr.Tang. [ Last edited by monowolf on 2008-9-25 at 21:58 ] |
» 收录本帖的淘帖专辑推荐
我的第一原理学习贴 | 第一原理资料贴 |
» 猜你喜欢
限项规定
已经有6人回复
西南交通大学国家级人才团队2026年博士研究生招生(考核制)—机械、材料、力学方向
已经有3人回复
救命帖
已经有6人回复
英文综述是否需要润色及查重
已经有5人回复
为什么nbs上溴 没有产物点出现呢
已经有9人回复
招博士
已经有3人回复
最失望的一年
已经有18人回复
2楼2008-09-25 21:59:25
3楼2008-09-25 22:02:57
4楼2008-09-26 14:40:58
5楼2009-05-30 15:36:34
6楼2009-05-30 15:46:48
7楼2009-05-30 15:47:37
8楼2009-05-30 19:04:42
9楼2009-05-30 20:48:08
10楼2009-05-31 09:35:27
11楼2009-05-31 10:49:40
12楼2009-05-31 11:54:14
13楼2009-06-04 11:25:33
14楼2009-06-04 14:26:37
15楼2009-06-04 15:40:39
16楼2009-06-04 15:56:37
17楼2009-06-04 16:05:47
18楼2009-06-05 09:01:33
19楼2009-06-05 17:07:35
20楼2009-06-09 01:14:53
21楼2009-06-10 16:41:32













,[18,18,144]);
回复此楼