核辐射测量数据处理成都理工大学程序设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计课程设计(论文)
设计(论文)题目
谱的显示、谱光滑、定量分析(峰面积)程序
学院名称核技术与自动化工程学院ﻩ
专业名称辐射防护与环境工程
学生姓名袁子程
学生学号201106080112
任课教师马永红
设计(论文)成绩
教务处制
2015年1月10 日
一、ﻬ实习目的
学习使用各种编程软件,利用计算机工具开展专业信息处理工作。
使用面向对象编程思想实现谱数据处理功能以及谱显示功能。二、人员组成及分工
本人题目为:谱的显示、谱光滑、定量分析(峰面积)程序
具体要求:
多项式最小二乘拟合实现谱光滑
对称零面积法实现寻峰
Wasson(瓦森、沃森)峰面积法实现峰面积计算
寻峰应在5、7、9、11之间可选,讨论最佳参数
三、实习计划
1.首先进行MFC绘图区域的学习和了解,实现基本绘图功能
2.建立单文档MFC程序,设计一个合理美观的工作区
3.实现文件打开读取功能,并能打开不同文件
4.进行谱数据处理的算法编写
5.编写成谱图形功能并给出处理结论
四、主要工作介绍(详细介绍实习中各功能的实现方法、理论公式和计
算原理,程序流程图和程序运行界面截图等成果信息)
1.建立单文档类MFC可执行程序
2.建立绘图区函数,初始化绘图设备
3.添加文件打开虚函数
4.编写读取文件及初步寻峰代码
5.添加绘制谱图代码
6. 尝试读取mca 文件
7. 添加谱数据处理代码
①多项式最小二乘拟合法:
∑-=+=
m
m
j j
i j
b
i data
A K data 1
,b=2m +1,为平滑宽度。 谱光滑
5
7
9
11
实际代码:
//多项式最小二乘法谱光滑(参数为5) ﻩﻩ for( i=2;i<1023;i ++) ﻩ ﻩ{
d ata[i]=1/35*((-3)*d ata[i-2]+12*data [i-1]+17*d ata [i ]+
12*da ta[i+1]+(-3)*dat a[i+2]); ﻩﻩﻩ }
②零面积对称法:
基本思想:面积为零的“窗”函数与实验谱数据进行褶积变换,且要求“窗”函数为对称函数。
数学表达式:j j m
m
j j
m
m
j j
i j
i C C C
data
C y --=-=+===∑∑0
~
其中,i y ~
为变换后的谱数据,data i+j 为原始实验谱数据,Cj 为对称零面积变换函数,W=2m+1为窗宽(变换宽度)。
对称零面积变换函数:∑-==
-=m
m
j j
j j G
W
d d
G C 1
Gj :[]
⎪⎪
⎪⎩⎪⎪⎪
⎨⎧==+=-=)634.2(sec ))2(cos )4))(2ln 4exp )22
2
2
2H j h G d H j G c j H H G b H j G a j j j j 双曲正割函数:
余弦平方函数:柯西函数:高斯函数:π
实际代码:
//零面积对称法寻峰(m=16,W =11,H=4) ﻩf or ( i=16;i<1007;i++) ﻩ{ ﻩ
for(j=0;j<16;j ++)
ﻩ ﻩG[i ]+=G [j];
ﻩﻩ d=1/11*G[i];
ﻩﻩ ﻩC [i]=G [i ]-d ; ﻩ ﻩ}
ﻩ f or( i=16;i<1007;i++) ﻩ {
ﻩ if((yi/dy)>f) ﻩﻩ fen g[k ++]=da ta[i];
ﻩﻩ }
③Was so n(瓦森、沃森)峰面积法: 计算总面积:∑-=+=
n
n
i i
i data
S 0
计算本底面积:
L L
R n data n L i L R data data b +----=
-)(0
L L
R n data n L i L
R data data b ++---=)(0
)21)((2
1
2)(++=++=--n b b n b b B n n n n
计算净峰面积:B S A -=
实际代码:
//Wasson(瓦森、沃森)峰面积法:
ﻩfor(i=L;i<=R;i++)
ﻩ{
ﻩﻩﻩRL=right-left;
ﻩﻩn=(right-left)/2;
ﻩﻩim=(right+left)/2;
ﻩﻩS+=data[i];
ﻩﻩBL=(data[L]-data[R])/RL*(im-L-n)+data[L];
ﻩﻩﻩﻩBR=(data[L]-data[R])/RL*(im-L+n)+data[L];
ﻩB=(BL+BR)*(n+1/2);
A=S-B;
ﻩﻩ}
计算峰位能量
//根据能量刻度系数求峰位能量
/* ﻩfor(i=0;i<1023;i++)
{
E[i]=0.017584*i-0.138133;
}
for(j=0;j<1024;j++)
{
if(E[dao[j]]<(6.403-6.403*0.1)||E[dao[j]]>(6.403+6.403*