广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    用Matlab处理MaterialStudio/Castep的数据

    来源:网络收集  点击:  时间:2024-02-16
    【导读】:
    MaterialStudio是一款强大的第一性原理计算软件,可以模拟计算很多物质的性质。其中的Caste主要用来计算电子结构,如能带,态密度,光学性质等。但是MS自带的图像管理器功能较少,不能很好的进行标记,调节画幅。下面介绍如何用Matlab来处理MS的数据。工具/原料moreMaterial Studio 8.0 及以上Matlab R2014a 及以上导出数据1/1分步阅读

    首先把数据从MS中导出,可以选则“File|Export”,也可以直接在图像上右键,点击Copy,再在记事本或文档中Paste粘贴

    数据格式1/4

    观察从MS中导出的数据格式,一般是.csv文件,可以用记事本或者其它的文本编辑器打开。本文中所举的例子是能带图。有两列数据,第一列是周期性重复的k值,第二列是能量值。为了方便作图,首先对数据作预处理。参考代码见后文。

    去掉MS对数据分段用的无意义巨大数值1E308

    将周期性的一列数据“折叠”成几列的格式,方便调用MatLab的plot函数作图。

    2/4

    可以利用导入函数importdata导入csv文件,同时指定数据的分隔符,如“,”“。”“ ”等。还可以指定从第几行开始导入数据,参考代码见后文。

    注意这一步进行时,要先把数据文件所在文件夹加入预设路径

    方法是在主页选项卡上点击“预设路径”,按提示加入。

    3/4

    然后就可以调用plot作图了。

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

    4/4

    做好图后,同样可以方便的用saveas函数指定文件名.格式导出,会将文件保存在当前目录中。

    更改当前目录的命令是:

    cd(路径名) 如cd(C:\Users\) 记得加引号。

    代码示例1/2

    %调用画图函数的脚本

    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

    相关资讯

    ©2019-2020 http://www.ff371.cn/ 国ICP备20009186号05-13 18:13:54  耗时:0.024
    0.0245s