导数法在γ射线能谱寻峰、边界道的确定、峰面积计算中的应用摘要:本文导数法对平滑后的能谱数据进行寻峰,并比较各阶导数法寻峰、导数法对于能谱数据寻峰、以及比较不同的拟合公式求导后对寻峰以及峰面积结果分析。关键词:能谱、峰面积、导数法、寻峰、边界道、拟合Abstract:Thismethodofderivativespectroscopydataaftersmoothingpeaksearch,andcompareorderderivativeFrancetofindthepeakderivativemethodforthespectroscopydatathepeaksearchandcomparedifferentfittingformuladerivationonthepeaksearchandpeakareaanalysisofresults.Keywords:spectroscopy,peakarea,thederivativemethod,peaksearch,boundaryRoad,fitting.导数是一条光沿曲线上数值的微商或微商函数,在数学上称它为曲线上各点的斜率。在导数光谱术中导数吸收光谱是指光强度或吸光强度对波长的变化率曲线。当将原吸收曲线进行一阶、二阶直至四阶求导时,便可得到各阶导数光谱。导数光谱的基本特征(1)对原曲线的极值求一、二阶导数时通过原点,求二阶导数时为极小值,四阶导数为极大值,并恢复至原位置。据此特征可以准确的测定最大的吸收峰位。(2)极值数目随求导阶数的增加而增加。如当原曲线有一个极大值时,求n阶导数就有n+1个极大值和极小值,而原曲线有两个极大值时,则出现n+3个极值。(3)随求导阶数的增加,谱带变窄和复杂化。两组分组合的吸收曲线原光小的吸收谱带为大的吸收谱带所掩蔽,经二阶求导之后,原曲线中的小“卫星”峰就变成极小值,四阶导数变为极大值。这时改善了谱线的分辨率,导数光谱更加明显。在γ射线衍射分析中各衍射谱也有类似的特征,不过这时的衍射曲线是晶体衍射强度4相对于衍射角5的一条光滑曲线,通常它是高斯、柯西和修正的洛仑兹函数形式,或其复合形式的分布函数。其一阶导数曲线通过零点,对应于衍射线的峰位3而二阶导数分布曲线的极小值也对应于峰位。由于一阶导数的零点确定峰位比较困难,特别是在多相衍射线重叠的情况下,一阶导数定峰不如二阶导数明显、准确,因此一般采用经光滑处理求二阶、四阶以至偶数阶导数的定峰方法。这是一种简便而有效的精确测定衍射峰位的方法。导数方法可以准确测定衍射峰位和重叠衍射峰的数目。因此,我们也称它为导数定峰法。所谓导数定峰法就是利用一条光滑衍射曲线上各点的数值微商(或求导)方式来确定重叠衍射峰位的方法。能谱分析对寻峰方法的基本要求如下:(1)识别弱峰(2)剔除假峰(3)分辨重峰(4)不仅能计算出峰位的整数道址,还能计算出峰位的精确值,某些情况下要求峰位的误差小于0.1道。一、导数法寻峰原理一阶导数法:经过平滑后的能谱我们可以很容易的计算其各阶导数。一阶导数计算过程如下:(1)采用五点三次平滑公式的一阶导数公式:(2)沿道指i方向检索一阶导数从正变负,其零点值对应的道址为峰位。(3)再利用峰高判断条件:0.8FWHMW3FWHM时才认为可能是一个真峰,否则(2)中找到的峰位全是假峰,必须剔除。由于统计涨落的影响,峰高判定条件必需加以修正。这就是一阶导数寻峰程序中实际应用的峰高判定条件。一阶导数法寻峰时最常用的一种方法,用这种方法能找出大部分峰,计算简单,运行书度也快,但主要缺点是不能分辨很近的重峰。二阶导数法:二阶导数和一阶导数法比较,二阶导数寻峰方法具有更高的重峰分辨能力。具体过程如下:(1)先计算平滑数据二阶导数数值。采用五点三次平滑公式的二阶导数公式:(2)沿道指i增加方向检索二阶导数值,(3)找出二阶导数局部负的极小值对应的道指。如果这个负极大值的绝对值大于改导数的标准差的若干倍,则认为该道指是一个真峰。(4)为了进一步剔除假峰,采用判定条件:二阶导数重叠峰导数图对于二阶导数法,其峰边界为真正的极大值点对应的道址三阶导数法三阶导数计算方法其峰位为其三阶导数值从负变为正的零点所对应的道址,峰的边界为三阶导数从正变为负的零点对应的道址。三阶导数可以确定重峰区的各个组分峰的峰位,而且能够狠灵敏的分辨重峰。一阶导,峰位处由正到负过零点,边界处由负到正过零点;二阶导,峰位处负的局部最小值,边界道为正的极大值;三阶导,峰位处由负到正过零点,边界处由正到负过零点。三、实验过程:流程图:第一种方法,先平滑,对平滑公式求导,再寻峰开始获取能谱数据高斯函数法对能谱进行平滑得到平滑后的能谱数据结束导数法的寻峰得到计算峰面积matlab编程程序如下:%function[peak_position,intensity]=peak_search_Gauss(array,m)%m灵敏度控制参数clc;clear;[Filename,Pathname]=uigetfile('','选择谱数据');fid=fopen([PathnameFilename],'r');[array,count]=fscanf(fid,'%d',inf);fclose(fid);peak_position=[];%峰位置信息%谱光滑采用高斯函数光滑y=0.24380.2050.12180.05126k1=4;%光滑点数控制参数fori=1:countif(i=k1)fori=1:k1array_smooth(i)=0.2438*array(i)+0.205*(array(i+1)+array(i+1))+0.1218*(array(i+2)+array(i+2))+0.05126*(array(i+3)+array(i+3));%对称做镜像处理endelseif(ik1&i(count-k1))array_smooth(i)=0.2438*array(i)+0.205*(array(i-1)+array(i+1))+0.1218*(array(i-2)+array(i+2))+0.05126*(array(i-3)+array(i+3));elsearray_smooth(i)=0.2438*array(i)+0.205*(array(i-1)+array(i-1))+0.1218*(array(i-2)+array(i-2))+0.05126*(array(i-3)+array(i-3));endendp=ones(1,count);%为处理结果事先分配空间并赋值m=1;%控制参数1j=2;%控制参数2固定fori=1+j:count-j-mp(i)=(array_smooth(i)*array_smooth(i+m))/(array_smooth(i-j)*array_smooth(i+m+j));endk=1.5;%峰判断控制参数fori=1:countupper(i)=1+k/sqrt(array_smooth(i));lower(i)=1-k/sqrt(array_smooth(i));end%寻找局部最大值简单比较法寻找factor=1;fori=1+factor:count-factorif(p(i)upper(i)&p(i)p(i+1)&p(i)p(i-1))peak_position=[peak_positioni];endend四、本文第二种思想:gauss8阶函数拟合法,此方法的主要思想是:不将数据平滑处理自然就没有了平滑公式,直接用八阶高斯函数拟合源数据,在对拟合后的函数进行求导,一阶导,峰位处由正到负过零点,边界处由负到正过零点;二阶导,峰位处负的局部最小值,边界道为正的极大值;三阶导,峰位处由负到正过零点,边界处由正到负过零点。其他过程都与前面的计算方法相同。开始获取能谱数据高斯函数法对能谱进行拟合对拟合后的函数求导结束导数法的寻峰得到计算峰面积五、MATLAB实验程序如下:六、实验结果输出:七、各阶导数寻峰效果比较:(1)一阶导数法寻峰时最常用的一种方法,用这种方法能找出大部分峰,计算简单,运行书度也快,对孤立峰有良好分辨能力,但主要缺点是不能分辨很近的重峰(2)二阶导数寻峰方法具有更高的重峰分辨能力,但灵敏度差。(3)三阶导数可以确定重峰区的各个组分峰的峰位,有很灵敏的重峰分辨能力,但是寻峰速度慢。八、不同拟合函数的效果比较:采用平滑后的多项式曲线平滑公式的寻峰效果更好,由于数据跳跃性太大,采用八阶高斯函数拟合法可能剔除弱峰,无法分辨重峰,误差比较大,但是平滑本来就会丢失弱峰和重峰,所以相比平滑公式求导寻峰高斯函数拟合法也是可以的。虽然老师上课没有讲这种寻峰方法,但是我认为在一般的数据分析中(单个或者多个强峰的分析)效果还是可行的。九、实验心得体会:参考文献:1、《核数据处理》东华理工大学,吴和喜2、BASIC语言程序库,张巨洪,19843、北京地区X射线分析专业会议论文集,陶琨,19834、V.JHammondelal.,J.Opt.Soc.Amer.43(1953)5、J.Steinieretal,Aual,Chem,44(1972)