核辐射测量数据处理成都理工大学程序设计报告.docx
《核辐射测量数据处理成都理工大学程序设计报告.docx》由会员分享,可在线阅读,更多相关《核辐射测量数据处理成都理工大学程序设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
核辐射测量数据处理成都理工大学程序设计报告
程序设计课程设计(论文)
设计(论文)题目
谱的显示、谱光滑、定量分析(峰面积)程序
学院名称核技术与自动化工程学院
专业名称辐射防护与环境工程
学生姓名袁子程
学生学号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.添加谱数据处理代码
①多项式最小二乘拟合法:
,b=2m+1,为平滑宽度。
谱光滑
5
7
9
11
Kb
35
21
231
429
A0
17
7
179
143
A±1
12
6
135
120
A±2
-3
3
30
60
A±3
-12
-55
-10
A±4
15
-45
A±5
18
实际代码:
//多项式最小二乘法谱光滑(参数为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)*data[i+2]);
}
②零面积对称法:
基本思想:
面积为零的“窗”函数与实验谱数据进行褶积变换,且要求“窗”函数为对称函数。
数学表达式:
其中,
为变换后的谱数据,datai+j为原始实验谱数据,Cj为对称零面积变换函数,W=2m+1为窗宽(变换宽度)。
对称零面积变换函数:
Gj:
实际代码:
//零面积对称法寻峰(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(瓦森、沃森)峰面积法:
计算总面积:
计算本底面积:
计算净峰面积:
实际代码:
//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";
elseif(E[dao[j]]<(7.477-7.477*0.1)||E[dao[j]]>(7.477+7.477*0.1))
ch[dao[j]]="Ni";
elseif(E[dao[j]]<(8.047-8.047*0.1)||E[dao[j]]>(8.047+8.047*0.1))
ch[dao[j]]="Cu";
elseif(E[dao[j]]<(8.638-8.638*0.1)||E[dao[j]]>(8.638+8.638*0.1))
ch[dao[j]]="Zn";
elseif(E[dao[j]]<(10.5-10.5*0.1)||E[dao[j]]>(10.5+10.5*0.1))
ch[dao[j]]="Ap";
elseif(E[dao[j]]<(11.725-11.725*0.1)||E[dao[j]]>(11.725+11.725*0.1))
ch[dao[j]]="As";
elseif(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
学生学习心得
在本次程序设计实习中,我再次学习了MFC编程方法。
过程中,我遇到了许多曾经都没有遇到的问题,比如文件的打开,文件按钮虚函数的添加,绘图无效等。
在一步一步解决这些问题的同时,渐渐进一步的熟悉掌握了谱数据处理的方法和编程思想。
学生(签名):
袁子程
2015年1月10日
诚信承诺
本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。
据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。
与我一同工作的同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。
学生(签名):
袁子程
任课
教师
评语
成绩评定:
任课教师(签名):
年月日