ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Origin全流程XRD全峰拟合:从峰形选择到晶粒尺寸计算

Origin全流程XRD全峰拟合:从峰形选择到晶粒尺寸计算 实验室待久了你会发现XRD数据处理这事儿真正卡人的往往不是衍射仪本身而是拿到图谱之后怎么把它掰开揉碎。很多人只会用Jade对个标准卡片真到要算晶粒尺寸、算晶格应变、确定低含量第二相的时候还是得回到Origin里做全峰拟合。这篇我把从数据导入、基线扣除、峰形函数选择到弱峰处理的完整流程拆开讲尽量写到每一步点哪里、参数填多少给正在被XRD拟合折磨的同学一个能直接照抄的作业。不管你是刚进组的研一新生还是被审稿人要求补XRD精修的老油条这套流程都适用。我默认你电脑上已经装好了Origin版本不用太新2018到2024都行中文英文界面不影响操作逻辑我下面会把菜单路径和中文翻译一起写出来。1. 动手前的准备软件、数据与工作区1.1 Origin版本和工作区布局怎么搞定先说软件。Origin这软件说不上难但版本差异确实会让人懵。老版本比如Origin 2017、2018和新版本比如2021、2024菜单名称略有差别但核心功能都集中在Analysis菜单下面找“Peaks and Baseline”这一项就行。如果你用的是中文界面对应的是“分析”→“峰值与基线”→“多峰拟合”。我个人建议把工作区布局调成三窗口模式左侧是Project Explorer中间是数据表和绘图窗口右侧是Object Manager。这样你在做拟合的时候能同时看到数据表、图谱和拟合参数不用来回切窗口。怎么调在View菜单里勾选Project Explorer和Object Manager即可。还有一个很实用的习惯新建项目后先把数据表重命名。比如“Sample_A_24h”而不是默认的“Book1”。拟合时你会生成一堆派生表、结果表命名清晰一点导出数据的时候才不会手忙脚乱。1.2 XRD数据怎么导进Origin数据导入这块是很多人第一步就卡住的地方。XRD衍射仪导出的数据格式五花八门常见的包括文本文件.txt或.csv两列第一列是2θ角度第二列是强度Excel文件.xls或.xlsx同样通常是两列Bruker的.raw格式Rigaku的.rd文件这类专有格式Origin往往不能直接读需要先用衍射仪自带软件导出成通用文本格式最省事的导入方式是这个直接用鼠标把txt或csv文件拖进Origin的空白区。松开鼠标后Origin会自动弹出导入向导默认识别逗号和Tab作为分隔符。绝大多数XRD文本文件都能一次性导对。如果拖进去发现只有一列别急多半是分隔符识别错了重新走一遍File → Import → Single ASCII在自定义分隔符里手动勾上“Tab”和“逗号”。导入之后要确认两列数据的类型。这一列必须是X轴右键点击列头选“设为X”另一列设为Y。很多人导入后没设X列结果画图时横坐标是1、2、3……根本不是角度这步注意一下。如果你手里的数据是多个扫描段拼起来的比如低温段和高温段分开扫的要先在Origin里按顺序追加合并。一个技巧是把第二段数据的X列坐标整体加上一个偏移量让两段角度连起来然后用“合并工作表”功能拼到一起。不过大多数物相分析用不到这一步知道有这功能就行。1.3 数据预处理平滑、截断与背景观察数据导进来后先别急着拟合。第一步是画图双击工作表里任意单元格选中X和Y两列然后点下方工具栏的Line图或Scatter图。XRD图谱一般用线图强行用散点图会密成一片黑。画完图第一件事是观察整体形状。如果你的图谱在低角度区有一堆乱七八糟的鼓包或者高角度区全是噪声建议先把有效范围截出来。比如你主要分析10°到80°之间的衍射峰就把两个坐标轴的范围改一下。双击横轴在Scale选项卡里填上From10To80。其实这一步和你后面拟合的稳定性关系很大——范围越小拟合时的计算量越小自动寻峰出错率越低。平滑做不做我的建议是如果你用的是普通铜靶XRD、狭缝和扫描速度正常尽量别平滑。因为拟合算法本身能容忍一定噪声你强行平滑反而可能把弱峰抹掉。只有在样品结晶度差、峰形完全被噪声盖住的情况下才考虑用Analysis → Signal Processing → Smooth默认方法选Savitzky-Golay窗口大小别超过5平滑次数1次就够。窗口开太大峰高会被削低半峰宽会被拉宽后面算晶粒尺寸就废了。数据准备的最后一步是判断背景形状。XRD背景通常来自非晶相、荧光、空气散射等整体是缓慢变化的曲线个别区域还有鼓包。拟合前你要在心里清楚哪些区域是没有衍射峰的纯背景区比如谱图最前端和最末端以及两个峰距离较远时的底部区域。这些背景点是你之后扣基线时的重要参考。2. 关于拟合你不得不知道的几个参数2.1 全峰拟合的数学模型到底是怎么回事把XRD拟合说透其实就是一句话用一组已知形状的函数去叠加逼近你实测的图谱曲线。每个衍射峰对应一个数学函数峰函数的叠加结果加上背景函数就是拟合曲线。你可以把它想成拼乐高。每个衍射峰是一个标准零件背景是底座你需要调整每个零件的位置峰位、大小峰高、峰面积和宽度半峰宽拼出来的整体轮廓要和实测曲线尽可能像。拟合算法做的事就是不断调整这些参数让拟合值和实测值之间的残差平方和最小化。Origin里的非线性拟合就是干这个的。它用的核心算法通常是Levenberg-Marquardt一种兼顾速度与稳定性的迭代优化算法。你不用懂算法细节但有两个概念必须清楚初始值和收敛。初始值给得越接近真实值拟合越容易收敛初始值离谱算法就可能跑到沟里去甚至直接报错。2.2 峰形函数怎么选高斯、洛伦兹还是伪Voigt峰形函数的选择直接决定拟合质量。常见的峰形函数有三个高斯函数Gaussian峰形比较圆润适合仪器宽化占主导的情况比如高分辨衍射仪测出的峰洛伦兹函数Lorentzian峰形有较长的尾巴适合晶粒细化、微观应变引起的宽化伪Voigt函数PseudoVoigt高斯和洛伦兹的加权组合一个参数就能调节两者比例适用范围最广我在实际项目里90%的情况直接用PseudoVoigt。它能兼顾两种宽化机制拟合结果也稳定。只有一种情况我建议用纯高斯峰特别弱、信噪比差的时候。峰形函数越简单拟合参数越少越不容易发散。在Origin里选峰形函数的位置是Analysis → Peaks and Baseline → Multiple Peak Fit → Open Dialog在弹出的界面里找到“Peak Function”下拉框选PseudoVoigt。中文界面就叫“伪Voigt”。如果你发现样品峰形明显不对称比如低角度侧拖尾、高角度侧陡峭标准对称峰函数拟合不好可以考虑A Pearson VII或者Clauss峰形但这类情况通常会建议你去做结构精修而不是在Origin里死磕。Origin毕竟不是专门做晶体结构精修的软件它的长项是快速提取峰参数。2.3 基线背景怎么设半峰宽基线范围怎么选基线问题是XRD拟合里最容易扯皮的地方也是网上搜索最多的关键词之一。很多人问“半峰宽基线范围怎么选取”其实它说的是同一件事一个衍射峰的左右两个端点落在哪里。半峰宽FWHM的定义是峰高一半处的宽度但这个宽度受到基线位置的直接影响。如果你基线抬高了峰看起来变矮半峰宽会变化基线歪了峰面积也会偏。所以基线范围选取的原则非常明确必须取在峰两侧没有其他衍射峰干扰的区域。实操中怎么找这个区域先把图谱局部放大找到这个峰的左右两侧。一般取峰的底部最接近背景的那两个点作为起止范围。如果相邻峰靠得很近底部互相交叠就取两个峰之间的谷底作为边界。如果谷底不明显一个妥协办法是——用局部最小值的连线作为基线延伸但这个操作要小心选错了会把肩峰全吃掉。Origin的Multiple Peak Fit工具里自动寻峰后会为每个峰自动生成一个基线范围默认是连接两个端点的一条直线。这属于线性基线适合简单情况。如果整个图谱背景本身就有弧度比如非晶鼓包比较大建议在拟合之前先手动扣除背景Analysis → Peaks and Baseline → Baseline → Create Baseline选好背景点后让软件插值生成一条背景曲线再Subtract掉。注意基线范围只影响当前峰的宽度和面积计算如果你的样品本身非晶含量很高背景是一个明显的漫散鼓包用线性基线必然导致峰面积虚高。这种情况最好用插值法做背景扣除或者把背景函数加入拟合。3. 保姆级实操在Origin里完成XRD全峰拟合3.1 先用单个峰试手完整跑一遍拟合流程第一次做全峰拟合别贪多先选一个独立、强度高、周围没有邻居峰的衍射峰练手。这样你能直观看到每个参数的作用也不至于被一堆峰搞乱。大致流程是这样的把数据表和绘图窗口准备好确保横轴是2θ、纵轴是强度。然后到菜单栏找Analysis → Peaks and Baseline → Multiple Peak Fit → Open Dialog。英文版这里会弹出一个拟合向导第一步让你选择需要拟合的数据一般默认就是当前激活的绘图数据点OK继续。接着它会让你选峰形函数和基线类型。峰形选PseudoVoigt基线类型选Linear或Constant。再点下一步来到自动寻峰界面。这里有两个参数需要设置Threshold阈值和Smoothing平滑点数。Threshold表示峰高的阈限软件会忽略峰值强度低于这个阈值的峰。初始值可以设成图谱最大强度的1%到5%后期根据弱峰识别情况再调低。Smoothing是寻峰前做的平滑窗口一般设3到5就够太高会把真正的峰平滑掉。点击Find Peaks后软件会在图谱上标记出找到的峰。这时候把窗口关闭回到图上你会发现每个峰的位置多了一条垂直线和中心点。检查一下有没有峰被漏掉或者多出来手动调整的办法是在Multiple Peak Fit界面里选择Add或Modify直接在图谱上点击你想要的位置或者编辑参数表里的Center值。最后点击Fit软件开始迭代。迭代结束后结果会输出到一张新工作表里面有每个峰的Center、FWHM、Height、Area还有拟合的R²值。一个新手上路能把这套流程完整走通就相当于学会了八成。3.2 多峰拟合一次处理整个XRD图谱单峰练熟后就可以上全峰拟合了。全峰拟合和单峰的区别只是把“自动寻峰”得到的多个峰同时拟合。步骤上你在同一个Multiple Peak Fit向导里把Threshold调低让软件识别出尽可能多的峰然后手动整理峰列表。一个很重要的原则自动寻峰只是一个起点永远不要指望它一次到位。你必须在拟合前对照XRD标准卡片把你预计存在的峰全部检查一遍。比如某种材料在33°附近理论上应该有衍射峰但强度很低自动寻峰没识别出来你就得手动加进去。整理好峰列表后点击Fit。这时还有几个参数可以设置迭代次数默认100一般够用但如果你发现拟合不收敛可以增加到500收敛容差默认1E-9通常不用动权重XRD强度数据本身遵循泊松统计强度越大误差越小用1/Y作为权重更合理这些选项在More按钮里英文界面叫“Fit Options”。如果你刚开始用可以直接默认设置遇到问题再调整。多峰拟合经常会遇到的一个现象是拟合出来某几个峰的位置偏移了正常值。排除样品本身的问题大概率是因为相邻峰重叠严重互相拉扯导致峰位偏移。解决办法是给峰位加边界约束比如你从卡片上知道这一相的标准峰位在28.44°就把Center的上下限设为28.4±0.1°。这个操作在参数表里直接编辑即可右键“Parameter”列可以勾选“Fixed”或者设置Bound。3.3 参数锁定和分段拟合让结果更稳定的实战策略全峰拟合最怕的是把所有峰和参数一股脑丢给算法让它自由调整。尤其是在弱峰多、重叠多的情况下算法很容易跑飞。我常用的套路是“先强后弱逐段锁定”。具体操作分三步先把图谱中几个强度较高、独立性好、卡片索引明确的峰挑出来只拟合这几个峰。拟合完成后记录下它们的峰位、峰高、半峰宽。然后把这些峰的参数从自由改为固定或者给很窄的上下限。最后把剩下的弱峰、肩峰加入列表再次拟合。此时因为强峰已经稳定弱峰受到的拉扯会小很多拟合更容易收敛。这个策略在处理多相混合物的XRD时尤其好用。比如你的样品里主相是A第二相B含量不到5%B的峰只有一两个若隐若现的小鼓包。你如果一上来就全峰自由拟合算法很可能把B的小鼓包当背景或者噪声处理掉。但先把A相所有峰锁定好再强制把B相的峰加进列表B峰才能被“逼”出来。另一个技巧是分段拟合。如果图谱的角度范围很大比如10°到100°前面的峰和后面的峰峰形差异很大建议把范围切开比如10°到50°一段50°到100°一段分别拟合。段与段之间留着一些重叠区域拟合完对比一下重叠处峰的参数是否一致一致就说明结果可靠。3.4 拟合结果怎么看晶粒尺寸怎么算拟合完成后Origin会在工作区生成一个结果表表里的核心参数有这几列峰序号Peak Index峰中心位置Center峰面积Area峰高Height半峰宽FWHM每个参数的拟合误差Standard Error看结果时第一件事不是看R²而是看Standard Error。如果某个峰的标准误差大得离谱比如峰位误差有±0.5°说明这个参数没有很好地被约束你需要回去加边界限制重新拟合。R²一般是0.99以上才算拟合得好但R²高不代表峰参数就对。更可靠的判断是看残差曲线Origin拟合后会生成残差图残差应该均匀地分布在零线附近而不是有明显规律性的波浪。残差出现波浪说明你漏掉了一个峰或者峰形函数选得不对。用FWHM算晶粒尺寸公式是Scherrer公式D K·λ / (β·cosθ)这里D是晶粒尺寸nmK是形状因子一般取0.9λ是X射线波长铜靶取0.15406 nmβ是半峰宽单位必须换算成弧度且要先扣除仪器宽化θ是衍射峰的布拉格角单位是角度。举个例子某衍射峰位于2θ38.2°也就是θ19.1°FWHM实测为0.32°换算成弧度是0.32 × π/180 0.005585 rad。假设仪器宽化已经扣掉那么D 0.9 × 0.15406 / (0.005585 × cos19.1°)。cos19.1°约等于0.945算出来D ≈ 0.1387 / 0.005278 ≈ 26.3 nm。整个过程直接塞进Excel或者Origin公式列就能批量算。4. 弱峰处理这可能是你最需要的部分4.1 为什么你的弱峰总是拟合失败弱峰之所以让人头疼不是因为峰本身有多难拟合而是它和噪声之间的界限实在太模糊。XRD图谱里真正的衍射峰是宽的、有一定对称性的凸起而噪声是高频率、小振幅的抖动。当峰强只有噪声的两三倍时人的眼睛还能勉强看出来但自动寻峰算法经常会忽略或者把噪声当成峰。更麻烦的是弱峰往往和旁边的大峰距离很近大部分峰身都压在大峰的尾巴上。这种情况下如果基线选得不够好弱峰分分钟被基线吞掉。很多同学拟合弱峰失败不是算法不行而是前期准备时根本没给弱峰留活路。4.2 四种让弱峰现形的办法对付弱峰我有四个常用的办法按推荐顺序排列第一是局部放大。把Y轴范围缩到弱峰峰强附近的区间比喻说整体强度是5万弱峰可能只有300把坐标范围改成0到1000你会发现原本埋在底部的那些小凸起有一个其实是峰。双击Y轴在Scale里调整From和To就行。第二是平滑。前面我说过不建议对全谱平滑但针对弱峰区域做轻度平滑是可以的。方法是用工具菜单里的Smooth选项选Savitzky-Golay窗口3到5。平滑后高低起伏的噪声会被捋平一点弱峰的轮廓会稍微清晰一些。注意平滑只用于辅助判断不要用平滑后的数据做最终拟合我一般还是用原始数据拟合。第三是二阶导数法。很多重叠峰的位置在原始图谱上看不出来但它们的二阶导数会发生符号变化。Origin里可以在数据分析菜单找Derivative对Y列求二阶导然后观察导数值的局部极值来判断是否存在隐藏峰。这个方法对分析肩峰特别管用我有一次在45°附近一个看似单峰的鼓包里用二阶导数找出了三个重叠峰后来对照卡片完全吻合。第四是对照PDF卡片。如果你已经用Jade或者其他工具大概知道样品里有哪些物相直接查PDF卡片上各物相的标准峰位看看你图谱上对应角度是否有一点点异常。哪怕只是有稍微的鼓起都值得把峰加进拟合列表试一下。4.3 弱峰拟合的实战参数设置技巧经过上面四步你已经确定某个角度存在弱峰接下来就是怎么拟合才不会翻车。我的建议如下先拟合强峰并锁定。这个前面讲过不再重复这是弱峰拟合成功的前提。弱峰峰值初始值不要给太高。弱峰的真实高度大概就在你估的范围内别给一个明显超过周围噪声的初始值。初始值给太高拟合时会往下压容易跑偏给太低峰可能被算法判定为不需要。给弱峰设置严格的参数上下限。峰位上下限可以根据卡片值比如卡片上写33.12°你就设33.0°到33.3°。FWHM上下限也要设比如不能低于0.1°、不能高于1.0°。这样即使算法迭代时想跑飞也会撞到边界弹回来。弱峰用简单峰形函数。建议用高斯函数参数少稳定。弱峰拟合是一个反复试探的过程通常你加了峰、设好参数、拟合完之后发现残差变得更整齐了就说明加对了。如果拟合后弱峰峰位飘得很远或者峰面积变成负的说明这个位置其实没有峰趁早删掉。注意弱峰的峰面积本身误差就很大如果你要用弱峰面积去做定量分析至少要将拟合的Standard Error控制在20%以内。控制不住的话只能增加实验时的扫描时间从数据源头提高信噪比。5. 常见问题与排查技巧实录5.1 拟合不收敛多半病根在初始值我遇到过太多人说“拟合不收敛”但其实问题不是算法不行而是初始值给得太离谱。比如你让算法从峰位20°开始拟合一个实际在38°的峰算法可能迭代几百次也找不到正确的谷底。解决办法很简单先自动寻峰把自动寻峰的峰位当作初始值然后稍微调整后再拟合。如果还是收敛不了就减少待拟合的峰数量或者把固定几个参数锁定。还有一种可能是图谱本身信噪比太差算法无法判断峰的真实位置这种情况就回到实验层面重新扫描或者提高扫描计数时间。5.2 拟合结果R²很高但算出来的晶粒尺寸明显不合理R²高不代表拟合结果物理上合理。一个典型的例子你把几个弱峰强加进去拟合曲线确实就把噪声盖住了残差也小但那些“峰”其实是纯噪声它们的FWHM随机分布算出的晶粒尺寸自然乱七八糟。所以一定要养成看残差图和峰参数误差的习惯。如果某个峰的Standard Error很大尤其FWHM的误差超过20%这个峰的参数就不要用来做后续分析。还有一种情况是有人把Kα2峰和Kα1峰当成两个独立峰拟合了导致FWHM数值偏低。铜靶衍射仪如果不加单色器Kα2峰会跟随在Kα1峰高角度一侧形成肩峰拟合时需要把它纳入峰形模型或者先用软件剥离Kα2否则FWHM会失真。5.3 半峰宽基线范围到底怎么选才稳这个话题值得再强调一次。基线范围直接影响FWHM和面积但很多同学对“范围”的理解是光谱上左右各选两点就行。其实更稳的做法是分三步走先不要设基线直接用默认线性基线拟合一次看拟合结果的残差。残差在峰底部出现系统性下弯说明基线设定范围太宽把邻峰的尾巴也算进来了残差在峰底部出现上鼓说明基线范围太窄没有包含足够的背景区域。根据残差方向微调峰的起点和终点反复试几次直到残差在峰两侧基本平直。这个“残差反馈法”是我在无数份数据里试出来的比盯着图谱凭感觉猜要靠谱得多。特别是处理密集多峰区时基线范围稍微差一丁点出来的峰面积能差百分之十几。5.4 快速排查表常见问题的原因和解决办法现象可能原因解决办法拟合不收敛初始值偏差大、峰数量过多自动寻峰结果作为初值、减少峰数、锁定部分参数峰位偏移很大邻峰重叠拉扯、初始值误差设置峰位上下限、先拟合强峰再拟合弱峰峰面积是负的该位置没有真实峰、基线选取错误删除该峰、重新设定基线范围残差有规律波浪漏峰、峰形函数不合适添加遗漏峰、改用伪VoigtFWHM算出的粒径太小Kα2未剥离、把噪声当峰拟合剥离Kα2、检查弱峰可信度中文界面找不到英文菜单版本和语言差异对照菜单翻译表或者切换英文界面5.5 中英文界面菜单对照别被教程绕晕网上的教程大部分是英文界面你用中文版找起来确实会懵。这里整理了一份高频菜单对照Analysis → Peaks and Baseline → Multiple Peak Fit分析 → 峰值与基线 → 多峰拟合Fit Options拟合选项Peak Function峰函数Baseline Mode基线模式Threshold阈值Find Peaks自动寻峰Fix/Free固定/释放参数Residual残差Standard Error标准误差把这几组词记下来你在任何版本里都不会迷路。6. 写在最后的真心话XRD全峰拟合这个东西说难也难说简单也简单。难在你要懂一点峰形函数的背景知识要会判断基线范围要有耐心去处理一堆弱峰。简单在只要你按部就班走一遍流程把初始值给好、把参数约束设好大部分拟合问题都能解决。我自己做了几十组数据之后最大的体会是拟合之前一定要先想清楚“我这个样品里应该有什么相”而不是漫无目的地让软件去找峰。你如果对样品体系有预判拟合时就会主动很多弱峰不会被漏掉结果也更可信。刚开始拟合得一团乱也别慌把峰的位置初值改成标准卡片的值再试一次很多莫名其妙的错误一下就消失了。最后分享一个我一直在用的小习惯拟合完不要只在Origin里看一眼R²就关掉把拟合参数导出成文本连同残差图一起存到项目文件夹里后面写文章、补审稿意见的时候你会感谢当时的自己。
返回列表