当前位置:文档之家› 核辐射测量数据处理成都理工大学程序设计报告

核辐射测量数据处理成都理工大学程序设计报告

程序设计课程设计(论文)
设计(论文)题目
谱的显示、谱光滑、定量分析(峰面积)程序学院名称核技术与自动化工程学院
专业名称辐射防护与环境工程
学生姓名袁子程
学生学号2
任课教师马永红
设计(论文)成绩
教务处制
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++)
{
data[i]=1/35*((-3)*data[i-2]+12*data[i-1]+17*data[i]+12*data[i+1]+(-3)*d
ata[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 为原始实验谱数据,C j 为对称零面积变换函数,W=2m +1为窗宽(变换宽度)。

对称零面积变换函数:∑-==
-=m
m
j j
j j G
W
d d
G C 1
G j :[]
⎪⎪
⎪⎩⎪⎪⎪⎨⎧==+=-=)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) for( 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;
}
for( i=16;i<1007;i++) { if((yi/dy)>f) feng[k++]=data[i];
}
③Wasson (瓦森、沃森)峰面积法: 计算总面积:∑-=+=
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*0.1)) ch[dao[j]]="Fe";
else if(E[dao[j]]<(7.477-7.477*0.1)||E[dao[j]]>(7.477+7.477*0.1))
ch[dao[j]]="Ni";
else if(E[dao[j]]<(8.047-8.047*0.1)||E[dao[j]]>(8.047+8.047*0.1))
ch[dao[j]]="Cu";
else if(E[dao[j]]<(8.638-8.638*0.1)||E[dao[j]]>(8.638+8.638*0.1))
ch[dao[j]]="Zn";
else if(E[dao[j]]<(10.5-10.5*0.1)||E[dao[j]]>(10.5+10.5*0.1))
ch[dao[j]]="Ap";
else if(E[dao[j]]<(11.725-11.725*0.1)||E[dao[j]]>(11.725+11.725*0.1)) ch[dao[j]]="As";
else if(E[dao[j]]<(12.611-12.611*0.1)||E[dao[j]]>(12.611+12.611*0.1)) ch[dao[j]]="Ni";
} */
8.调试运行
五、体会
在本次程序设计实习中,我再次学习了MFC编程方法。

过程中,我遇到了许多曾经都没有遇到的问题,比如文件的打开,文件按钮
虚函数的添加,绘图无效等。

在一步一步解决这些问题的同时,渐渐进一步的熟悉掌握了谱数据处理的方法和编程思想。

但是依旧有一个问题尚未解决,那就是数据类型的变化。

这个使得我无法在数据处理中正确地获取应有的结果。

令我费解的是成
谱图像却是与原始数据非常的吻合。

对于这个问题我依然百思不得
其解。

六、建议
我对本门课程的掌握程度也非常有限,提出以下建议供老师和学弟学妹们参考。

1.MFC编程时一个系统过程,需要掌握的细节可以随时网上学
习,但是总体思路要牢记,不容易临时掌握。

2.对于本专业同学们而言,这次实习是扩展我专业同学技能的大
好机会,建议不要轻易放弃,认真编写,即使最后没有达到自己预
期的计划也是收获颇丰的。

3.在编写的过程中要有良好的格式及注释习惯,以免一段时间甚
至几分钟后就看不懂自己的思路。

4.在编写算法过程中,一定要回归理论,弄明白实际数学过程,
对算法的编写很有帮助。

5.希望老师能够对非算法部分给予同学更多的帮助,教授同学建立软件的过程,指导同学完成非专业的部分,让同学着眼于数学导算法的翻译。

最后,衷心感谢在本次程序设计实习过程中,马永红老师细心的指导,您不厌其烦地解答我的各种疑问,并且帮助我寻找原始数据的数据格式和数据类型。

我还要感谢芦瑞琪、蒋卓辰同学对我在思路上的重要启发,谢谢你们给予我的大力支持!
附:程序包附在附件中,项目名称为37gai。

相关主题