东华理工核数据处理课程设计 - 图文
更新时间:2024-06-20 21:48:01 阅读量: 综合文库 文档下载
- 东华理工核数据处理考试推荐度:
- 相关推荐
核数据处理课程设计
题 目:
关于γ能谱寻峰、边界道的确定以及峰面积计算
学生姓名:
班 级:
学 号:
指导教师:吴 和 喜
二零一二年六月
核数据处理课程设计报告
--γ能谱寻峰、边界道以及峰面积计算
摘要:本文简述两种不同的平滑过程与寻峰方法,简单比较法寻峰方法和导数法寻峰的对
比分析,试用采用八阶高斯函数拟合后公式求导后对寻峰以及峰面积结果分析。
关键词:能谱、峰面积、导数法、寻峰、边界道、拟合
Abstract:This method of derivative spectroscopy data after smoothing peak search, and
compare order derivative France to find the peak derivative method for the spectroscopy data the peak search and compare different fitting formula derivation on the peak search and peak areaanalysis of results.
Keywords: spectroscopy, peak area, the derivative method,peak search, boundary Road, fitting
一、实验原理: 1、采用高斯函数的平滑方法
如果把谱数据中的统计涨落看成是“白噪声”,当使用匹配滤波器进行滤波时,可以得到最佳的信号噪声比。所谓匹配滤波器,就是该滤波器在道域中冲击响应函数与峰函数互为镜象。一般情况下,谱中的峰函数可以近似为高斯函数。由于高斯函数是偶函数,所以匹配滤波器在道域中的响应函数也应该是高斯函数。
2、简单比较法寻峰
简单比较法是一种最直观又快速的寻峰方法。其基本思想是:在谱数据中,若某一道
的数据比其他相邻的几道大很多,则可认为该道存在一个峰。连续检索光滑后的谱数据,如果在第m道同时满足下列关系式
ym?i?ym?kym?ym?i
则第m道附近有一个峰。式中,k是寻峰阈值,通常取1-1.5:m=2i+1为寻峰窗口宽度,一般i去1或2。在第m道附近的谱数据中用二阶差值多项式计算出精确峰位。
简单比较法适于寻找强单峰,在高本底上导找弱峰和分辨重峰的能力都比较差。但算法简单,程序运行速度较快。
导数是一条光沿曲线上数值的微商或微商函数,在数学上称它为曲线上 各 点 的 斜
率。在导数光谱术中导数吸收光谱是指光强度或吸光强度对波长 的变化率曲线。当将原吸收曲线进 行一阶、二阶直至四 阶求导时,便可得到各阶导数光谱。导数光谱的基本特征(1)对原曲线的极值求一、二阶导数时通过原点,求二阶导数时为极小值,四阶导数为极大值,并恢复至原位置。据此特征可以准确的测定最大的吸收峰位。(2)极值数目随求导阶数的增加而增加。如当原曲线有一个极大值时 ,求n阶导数就有n+1个极大值和极小值,而原曲线有两个极大值时,则出现n+3个极值。(3)随求导阶数的增加,谱带变窄和复杂化。两组分组合的吸收曲线原光小的吸收谱带为大的吸收谱带所掩蔽,经二阶求导之后,原曲线中的小 “卫星”峰就变成极小值,四阶导数变为极大值。这时改善了谱线的分辨率,导数光谱更加明显。
在γ射线衍射分析中各衍射谱也有类似的特征,不过这时的衍射曲线是晶体衍射强度 4 相对于衍射角5的一条光滑曲线,通常它是高斯、柯西和修正的洛仑兹函数形式,或其复合形式的分布函数。其一阶导数曲线通过零点 ,对应于衍射线的峰位3而二阶导数分布曲线的极小值也对应于峰位。由于一阶导数的零点确定峰位比较困难,特别是在多相衍射线重叠的情况下,一阶导数定峰不如二阶导数明显、准确,因此一般采用经光滑处理求二阶、四阶以至偶数阶导数的定峰方法。这是一种简便而有效的精确测定衍射峰位的方法。导数方法可以准确测定衍射峰位和重叠衍射峰的数目。因此,我们也称它为导数定峰法。所谓导数定峰法就是利用一条光滑衍射曲线上各点的数值微商(或求导)方式来确定重叠衍射峰位的方法。 能谱分析对寻峰方法的基本要求如下: (1)识别弱峰 (2)剔除假峰
(3)分辨重峰
(4)不仅能计算出峰位的整数道址,还能计算出峰位的精确值,某些情况下要求峰位的误差小于0.1道。
一、导数法寻峰原理
一阶导数法:
经过平滑后的能谱我们可以很容易的计算其各阶导数。一阶导数计算过程如下: (1) 采用五点三次平滑公式的一阶导数公式: yi?,1(yi-2-8yi-1?8yi?1-yi?2) 12(2)沿道指i方向检索一阶导数从正变负, 其零点值对应的道址为峰位。 (3)再利用峰高判断条件: 0.8FWHM 这就是一阶导数寻峰程序中实际应用的峰高判定条件。 一阶导数法寻峰时最常用的一种方法,用这种方法能找出大部分峰,计算简单,运行书度也快,但主要缺点是不能分辨很近的重峰。 二阶导数法: 二阶导数和一阶导数法比较,二阶导数寻峰方法具有更高的重峰分辨能力。具体过程如下: (1)先计算平滑数据二阶导数数值。采用五点三次平滑公式的二阶导数公式: 1,yi?(2yi-2-yi-1-2yi-yi?1?2yi?2) 7(2) 沿道指i增加方向检索二阶导数值, (3) 找出二阶导数局部负的极小值对应 的道指。如果这个负极大值的绝对值大于 改导数的标准差的若干倍,则认为该道指 是一个真峰。 (4) 为了进一步剔除假峰,采用判定条件 --\D(ymp-1)y”mp-1y\mp?1D(y\mp?1)?K2 二阶导数重叠峰导数图 对于二阶导数法,其峰边界为真正的极大值点对应的道址 三阶导数法 三阶导数计算方法其峰位为其三阶导数值从负变为正的零点所对应的道址,峰的边界为三阶导数从正变为负的零点对应的道址。 三阶导数可以确定重峰区的各个组分峰的峰位,而且能够狠灵敏的分辨重峰。 一阶导,峰位处由正到负过零点,边界处由负到正过零点 ;二阶导,峰位处负的局部最小值,边界道为正的极大值;三阶导,峰位处由负到正过零点,边界处由正到负过零点。 三、实验过程: 流程图:第一种方法,先高斯函数平滑,简单比较法寻峰 开始 获取能谱数据 高斯函数法对能谱进行平滑 得到平滑后的能谱数据 简单比较法寻峰 得到计算峰面积 结束 matlab编程程序如下: clc; clear; [Filename,Pathname]=uigetfile('*.txt','选择谱数据'); fid=fopen([Pathname Filename],'r'); [array,count]=fscanf(fid,'%d',inf); fclose(fid); x=1:count; plot(x,array) peak_position=[]; %峰位置信息 %谱光滑 采用高斯函数光滑 y=0.2438 0.205 0.1218 0.05126 k1=4; for i=1:count if(i<=k1) for i=1: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)); %对称做镜像处理 end elseif(i>k1&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)); else 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)); end end x2=1:count; plot(x2,array_smooth) p=ones(1,count); m=1; %控制参数1 j=2; %控制参数2 for i=1+j:count-j-m p(i)=(array_smooth(i)*array_smooth(i+m))/(array_smooth(i-j)*array_smooth(i+m+j)); end k=1.5; %峰判断控制参数 for i=1:count upper(i)=1+k/sqrt(array_smooth(i)); lower(i)=1-k/sqrt(array_smooth(i)); end%简单比较法寻峰 factor=1; for i=1+factor:count-factor if(p(i)>upper(i)&p(i)>p(i+1)&p(i)>p(i-1)) peak_position=[peak_position i]; end end plot(array_smooth,'b*'); hold on; peak=array(peak_position) plot(peak_position,peak,'r+'); 实验结果如下: 四、本文第二种思想:gauss8阶函数拟合法,此方法的主要思想是:不将数据平滑处理自然就没有了平滑公式,直接用八阶高斯函数拟合源数据,在对拟合后的函数进行求导,一阶导,峰位处由正到负过零点,边界处由负到正过零点 ;二阶导,峰位处负的局部最小值,边界道为正的极大值;三阶导,峰位处由负到正过零点,边界处由正到负过零点。其他过程都与前面的计算方法相同。 开始 获取能谱数据 高斯函数法对能谱进行拟合 对拟合后的函数求导 导数法的寻峰 得到计算峰面积 结束 五、MATLAB实验程序如下: % y 原始数据,1025*1 % x = (1:1025)'; % y2为前600个数据 也可用全部数据 y2 = y(1:600); % 这四个峰出现在y(1:600)中 % x2 = (1:600)'; x2 = (1:length(y2))'; % Set up fittype and options. ft = fittype( 'gauss8' ); opts = fitoptions( ft ); opts.Display = 'Off'; opts.Lower = [-Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0]; opts.StartPoint = [1236 282 3.92319043722374 907 336 4.22548549053934 338.232193942756 342 5.30830398585762 308 230 6.26590931040574 254.442173171231 277 6.49267774242084 135.84970058518 329 7.80555875890908 112 1 21.9443863743451 102 398 10.6865668950446]; opts.Upper = [Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf]; % Fit model to data. [fitresult, gof] = fit( x2, y2, ft, opts ); % Plot fit with data. figure( 'Name', 'fit gauss8' ); h = plot( fitresult, x2, y2 ); legend( h, 'y2 vs. x2', 'fit gauss8', 'Location', 'NorthEast' ); % Label axes xlabel( 'x2' ); ylabel( 'y2' ); title('gauss8拟合的效果图'); grid on dd111 = diff(fitresult(x2)); x20 = x2(dd111(1:end-1).*dd111(2:end)<0) %导数值跨过0的值 % x20 = [228; 238; 259; 267; 281; 308; 336; 376; figure plot(x2,fitresult(x2),x20,fitresult(x20),'o') title('边界道址、峰位'); xz11 = 228 - (238-228); % 第一个峰左侧的边界道址(对称点) Z1 = trapz(x2(xz11:238),y2(xz11:238)) % 第一个峰的面积 Z2 = trapz(x2(267:308),y2(267:308)) % 第二个峰的面积 Z3 = trapz(x2(308:376),y2(308:376)) % 第三个峰的面积 xz42 = 397 + (397-376); % 第四个峰右侧的边界道址(对称点) Z4 = trapz(x2(376:xz42),y2(376:xz42)) % 第四个峰的面积 六、实验结果输出: 397]; 七、各阶导数寻峰效果比较: (1)一阶导数法寻峰时最常用的一种方法,用这种方法能找出大部分峰,计算简单,运行书度也快,对孤立峰有良好分辨能力,但主要缺点是不能分辨很近的重峰 (2) 二阶导数寻峰方法具有更高的重峰分辨能力,但灵敏度差。 (3) 三阶导数可以确定重峰区的各个组分峰的峰位,有很灵敏的重峰分辨能力,但是寻峰速度慢。 八、不同拟合函数的效果比较: 采用平滑后的多项式曲线平滑公式的寻峰效果更好,由于数据跳跃性太大,采用八阶高斯函数拟合法可能剔除弱峰,无法分辨重峰,误差比较大,但是平滑本来就会丢失弱峰和重峰,所以相比平滑公式求导寻峰高斯函数拟合法也是可以的。虽然老师上课没有讲这种拟合函数的方法,但是我认为在一般的数据分析中(单个或者几个强峰的分析)效果还是可行的。 九、实验心得体会: 在本次《核数据处理课程设计》中我深刻体会到了这门课的难度,由于对MATLAB软件不熟悉,我几乎是从零学起,每一个语句都来之不易,上课的理论知识还算比较扎实,编程的思想我很清楚,我知道自己要干什么,但却无法用MATLAB语句写出来。最终,在这些天不断的摸索中我终于初步掌握了MATLAB的编程,学会了用MATLAB对核数据的一般处理,平滑(拟合曲线)—求导寻峰—确定边界道—计算峰面积等等。总之,在这次课程设计中我学到了很多,学会了将理论知识应用到实践当中去,理论知识掌握得比较扎实。同时,我也深刻认识到自己的不足,我的MATLAB编程我能力确实比较差,在以后的学习中一定会加强这方面的训练,努力掌握软件编程方法这个处理核数据最关键的步骤。 参考文献: 1、《核数据处理》 东华理工大学,吴和喜 2、BASIC语言程序库,张巨洪,1984 3、北京地区X射线分析专业会议论文集,陶琨,1983 4、V. J Hammond el al.,J. Opt. Soc. Amer.43(1953) 5、J.Steinier et al,Aual,Chem,44(1972)
正在阅读:
东华理工核数据处理课程设计 - 图文06-20
茶叶中游离氨基酸的测定05-21
电厂热工自动化系统检修常见问题分析及处理03-02
陕西省消防条例(陕西省人民代表大会常务委员会公告第二十号)03-20
12.1运动的描述同步练习题112-14
“看病贵、看病难”的主要原因及其解决方法03-20
守规则我做对了作文450字07-12
2020年人教版八年级英语下册Unit 4 Section B基础知识同步练04-28
女生大一新生必备用品清单02-09
临床实验室管理试题01-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据处理
- 东华
- 理工
- 课程
- 图文
- 设计
- GSM各种过程流程详解-全
- 全新版大学进阶英语第二册第四单元答案
- 重庆市果蔬汁饮料行业企业调查报告2018版
- 文献检索复习指导(学生)
- 实时控制系统的步进电机速度控制器设计
- 2019届高三第一次模拟考试生物试卷(一)含答案
- 2013版用于立项超小型飞机(含无人驾驶飞机)项目可行性研究报告
- 分段执行中的权利制衡与程序效率的提高
- 软件项目开发课程设计-汽车零配件库存管理系统说明书
- 物流企业合作协议书
- 抗日战争时期国共两党正面战场和敌后战场的抗战
- NetPayClient用户手册
- 福建华泰集团2012年度节能目标考核自查报告 - 图文
- 运营督导岗位职责薪酬标准及考核办法
- 2016年五年级语文上册11狼群练习题及答案
- 用数对确定位置说课稿—朱红群(天津市东丽区宝元小学)
- 苏教版语文七年级上册期末系列试卷(01)(附答案)
- 高中语文 第3单元《荀子》选读 大天而思之,孰与物畜而制之讲义
- be动词,情态动词,助动词do
- Y2012M03D23大远轮机模拟器说明文档 - 图文