用Matlab处理MaterialStudio/Castep的数据
来源:网络收集 点击: 时间:2024-02-16首先把数据从MS中导出,可以选则“File|Export”,也可以直接在图像上右键,点击Copy,再在记事本或文档中Paste粘贴


观察从MS中导出的数据格式,一般是.csv文件,可以用记事本或者其它的文本编辑器打开。本文中所举的例子是能带图。有两列数据,第一列是周期性重复的k值,第二列是能量值。为了方便作图,首先对数据作预处理。参考代码见后文。
去掉MS对数据分段用的无意义巨大数值1E308
将周期性的一列数据“折叠”成几列的格式,方便调用MatLab的plot函数作图。

可以利用导入函数importdata导入csv文件,同时指定数据的分隔符,如“,”“。”“ ”等。还可以指定从第几行开始导入数据,参考代码见后文。
注意这一步进行时,要先把数据文件所在文件夹加入预设路径
方法是在主页选项卡上点击“预设路径”,按提示加入。


然后就可以调用plot作图了。
做好图后可以指定标题title,图例legend,轴标记Label,刻度tick等等。特别的,这里可以自定义轴标记,所以可以很方便的做出能带图。


做好图后,同样可以方便的用saveas函数指定文件名.格式导出,会将文件保存在当前目录中。
更改当前目录的命令是:
cd(路径名) 如cd(C:\Users\) 记得加引号。

%调用画图函数的脚本
cd(\Documents\MATLAB\BandStructure)
%指定当前文件夹即保存位置
global MainPosition
gap=
MainPosition=;
% 指定带隙、主标记位置以划画竖线去掉了0和1--去掉了首末位置
Position=; %x轴刻度位置
Label={A R L U M Σ Γ Δ A S...
H P K T Γ}; %刻度名称
savefilename={BandStr_GGA}
% 指定画图文件名称
h(1)=figure(1);
BandStrucPlotFun(savefilename{1},gap(1),Position,Label) %调用画图函数
% 能带作图结束
2/2%画图函数
% 参考调用
% plot(x,y,--gs,... 线型 与 数据点记号
% LineWidth,2,... 线宽
% MarkerSize,10,... 记号大小
% MarkerEdgeColor,b,... 记号边缘颜色
% MarkerFaceColor,) 记号内部颜色
% set(get(gca,Title),Color,k,FontSize,13) 指定标题 及颜色字号
%anotation 指定说明文字(带隙宽度) 四坐标为左下角xywh 以figure归一化
%参考结束
function =BandStrucPlotFun(savefilename,gap,Position,Label)
global MainPosition
%声明全局变量,这个变量标记X轴标记主要位置
filename=;
delimiterIn = ,;
headerlinesIn = 0;
%指定导入数据格式
BandStr = importdata(filename,delimiterIn,headerlinesIn);
BandStr2=;
BandStr1=; %使导入的数据周期性完整,便于处理
=find(BandStr1100); %去掉无意义巨大值
row1=;
for i=1:size(row)-1
BandStr2(:,i)=BandStr1((row1(i)+1):(row1(i+1)-1),2);
end
BandStr2=;
%折叠第2列数据
%导入数据,并做预处理。
plot(BandStr2(:,1),BandStr2(:,2:end),h-,LineWidth,1,MarkerSize,2)
axis()
%作图并指定 线型 线宽 坐标轴限度
hold on;
plot(,,Color,k,LineStyle,-) %画出0能线
for i=1:2:11
plot(MainPosition(1,i:i+1),,...
Color,k,LineStyle,--,LineWidth,1)
end
set(gca,Title,text(String,savefilename,Interpreter,none,...
FontName,Times new roman,FontWeight,bold,...
Color,k,FontSize,25))
%指定标题格式
% ,Units,normalized,Position, 这个是标题位置的附加考虑
% 指定标题 标题格式 位置 以坐标轴大小为归一化
set(get(gca,YLabel),String,Energy/eV,FontSize,15....
,FontName,Times new roman,FontWeight,bold)
set(gca,Xtick,Position,XTickLabel,Label,...
FontName,Times new roman,FontSize,15,XGrid,off)
%以上指定标题 y轴标记位置及名称 不画出x轴网格线/画出是on
% 字体 Calibri/Times new roman等等
% annotation(textbox, ,...
% String, Straight Line Plot 1 to 10,...
% LineStyle,none,FitBoxToText,on,...
% HorizontalAlignment,center);
% title的调用格式(title 属于text)
% text(x,y,z,string,PropertyName,PropertyValue....)
% text的位置以axes归一化
set(gca,Units,normalized,Position,,...
TickLength,)
% 设定坐标轴的大小,以figure为归一化
%并令x tick的长度为0,即不显示小短线。
text(String,,...
HorizontalAlignment,right,...
FontName,Times new roman,FontWeight,bold,Color,k,...
FontSize,15,Units,normalized,Position,)
text(String,AlN,...
HorizontalAlignment,left,...
FontName,Times new roman,Color,k,...
FontSize,15,Units,normalized,Position,)
% 以上指定说明文字,指定带隙和物质名称
set(gcf, PaperUnits, centimeters);
set(gcf, PaperSize, );
set(gcf, PaperPositionMode, manual);
set(gcf, PaperUnits, normalized);
set(gcf, PaperPosition, );
saveas(gcf,savefilename,png)
% 以上格式化并输出图像,保存在\MATLAB\BandStructure文件夹
end
注意事项MatLab不支持中文符号,所有指令请用英文输入。
要把当前路径加入“预设路径”,才能进行调用。
如果运行出错,请参考help文档。调用格式是 help “命令”
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_50027.html