核数据处理课程设计方案书.docx
《核数据处理课程设计方案书.docx》由会员分享,可在线阅读,更多相关《核数据处理课程设计方案书.docx(13页珍藏版)》请在冰豆网上搜索。
核数据处理课程设计方案书
核数据处理
一、实习目的
1、掌握图形程序的编写技能与技巧;
2、掌握文件读写函数的使用;
3、理解整个谱数据处理的流程;
4、进一步掌握对常用核数据处理的基本方法
5、掌握软件设计所需的基本动手能力,解决实际问题。
二、实习内容
1、读谱数据文件、保存光滑后的谱数据文件,文件名可选
2、显示谱数据,各算法要以函数方式实现
3、显示分析谱段范围内,寻得的各峰位道址、能量、对应的元素名称
4、显示寻峰及峰面积计算结果
5、光滑、寻峰宽度2k+1应在5、7之间可选,讨论最佳参数。
三、需求分析
1、输入、输出的内容和形式
(1)输入:
a、打开应用软件,弹出要求输入谱数据文件名对话框。
b、需要刻度谱线时,分别按e键和c键输入元素文件名和能量刻度文件名。
c、人机交互时,采用键盘按键方式将命令传给程序(具体操作:
在运行程序后按h键即可弹出操作说明对话框)。
(2)输出:
a、屏幕显示谱线;光标位置及光标处的道址、能量和计数;屏幕上方显示“Softwareinstructionspleaseinput'h'”。
b、当谱线被刻度好后,按n键会弹出相应元素对应的能量、面积和净峰面积。
c、按h键弹出应用程序操作说明对话框。
2、预期功能、界面
(1)显示输入谱文件名对话框;在文件名输入正确时,能够正确读取文件中的数据。
(2)正确显示谱线以及在刻度后显示道址、能量及计数。
(3)显示相应元素对应的能量、面积和净峰面积对话框。
(4)达到谱数据光滑的效果。
(5)采用键盘输入命令,使屏幕:
a、即时显示光标的位置以及对应的道址、能量及计数。
b、即时显示不同幅度放大倍数时的谱线形状。
c、即时显示不同光滑次数处理后的谱线微细结构(只有在幅度放大倍数很大时光滑效果才明显)。
d、即时显示谱线的点和线的切换。
3、测试数据
(1)文件读入是否正确。
(2)谱数据段的选择功能是否实现。
(3)move和curse的边界值是否设置妥当。
(4)谱数据光滑时前后几个数据(不能进行光滑)是否与光滑次数的关系对应好。
(5)道址和能量的换算是否正确。
(6)寻峰是否正确。
(7)最小能量差的计算是否正确。
(8)根据能量查找核素是否正确。
(9)净峰面积的计算是否有缺陷。
(10)检查谱线幅度放大时是否会出现异常。
四、概要设计
1、开发工具:
TurboC。
2、主要算法:
(1)、重心法:
选取加权因子和归一化因子,使光滑后的数据成为原来数据的重心。
常见的有5点和7点光滑。
5点法:
7点法:
(2)、简单比较法(极值定峰法、IF函数找峰法):
a、峰的定义:
满足,然后在datai-m至datai+m中找最大值道。
b、常用的:
5点、7点极大值法。
c、一般,用R=N0/Nb≥Rc确定峰是否有意义。
N0为净峰幅度与基底之和,Nb为基底计数,Rc为设定值。
d、k:
找峰阈值,根据高斯统计概率分布,一般k取值:
1—1.5。
峰的左右边界道i-L和i+R的确定:
(3)、线性本底法:
计算总面积:
计算本底面积:
计算净峰面积:
3、主程序的流程及各模块之间的关系。
五、详细设计
1、函数及变量定义:
#defineMAX_ELEMENT_NUM20
#defineScreenHeight480
#defineScreenWidth640
#defineLineHeight370
#defineLineWidth500
#defineLineLeftX((ScreenWidth-LineWidth)/2)
#defineLineRightX(LineLeftX+LineWidth)
#defineLineTopY40
#defineLineBottomY(LineTopY+LineHeight)
FILE*dataFile;
intgdriver,gmode;
unsignedlongdataTable[1024],maxVal;
intDisPos[500];/*实际显示的数据*/
intOriPos[500];/*未处理前的数据*/
intcursorX;
floatzoom;
unsignedintcursorChannel;
unsignedchardispLine;
unsignedcharenergyMarked,elementLoaded,SpectrumLoaded,peakSeeked,cursorPeakseeked;
intsmoothLevel=1,peakSeekLevel=9;
floata,b;/*能量刻度方程*/
charelement[MAX_ELEMENT_NUM][2];
unsignedcharnumOfElement,cursorElement;
floatelementEnergy[MAX_ELEMENT_NUM];
unsignedintpeakBound[MAX_ELEMENT_NUM][2];
unsignedlongelementArea[MAX_ELEMENT_NUM],elementNetArea[MAX_ELEMENT_NUM];
unsignedintcursorPeakBoundLeft,cursorPeakBoundRight;
unsignedlongcursorPeakArea,cursorPeakNetArea;
2、程序中用到的重要数据
(1)cursorEnergy=a+b*cursorChannel;
Channel:
%4dEnergy:
%7.4fMevCount:
%-6lu"cursorChannel,cursorEnergy,cursorCount;
(2)Channe=(energy-a)/b;
(3)cursorChannel=findPeakByChannel(cursorChannel);
cursorX=cursorChannel-300+LineLeftX;
cursorPeakBoundLeft=cursorLb;
cursorPeakBoundRight=cursorRb;
cursorPeakArea=cursorArea;
cursorPeakNetArea=cursorNetArea;
cursorPeakseeked=1;
peakSeeked=0;
3、函数的说明
(1)voidtextbackground(intcolor);//设置背景颜色:
voidtextcolor(intcolor);//设置字符颜色:
②数据-坐标转化函数
(2)设置屏幕为图形模式:
voidinitgraph(int*gdriver,int*gmode,char*path);
(3)画点函数
voidfarputpixel(intx,inty,intcolor);
该函数表示有指定的象素画一个按color所确定颜色的点。
Color为显示点的颜色,对x,y是指图形象元的坐标。
(4)voidfarline(intx0,inty0,intx1,inty1);//画一条从点(x0,y0)到(x1,y1)的直线
(5)voidfarrectangle(intx1,inty1,intx2,inty2);//以(x1,y1)为左上角,(x2,y2)为右下角画一个矩形框。
(6)voidfarfloodfill(intx,inty,intborder);
其中:
x,y为封闭图形内的任意一点。
border为边界的颜色,也就是封闭图形轮廓的颜色。
调用了该函数后,将用规定的颜色和图模填满整个封闭图形。
注意:
:
1.如果x或y取在边界上,则不进行填充。
2.如果不是封闭图形则填充会从没有封闭的地方溢出去,填满其它地方。
3.如果x或y在图形外面,则填充封闭图形外的屏幕区域。
4.由border指定的颜色值必须与图形轮廓的颜色值相同,但填充色可选任意颜色。
4、函数的调用关系图。
六、调试分析
1、调试过程中遇到的问题及解决对策
(1)Win7操作系统不支持wintc的运行功能,也不支持TurboC。
因为Win7操作系统不支持程序运行后的全屏显示。
解决对策:
下载DOSBox软件即可解决此问题。
(2)文件不能导入。
解决对策:
把文件与应用软件放在同一个文件里。
(3)界面不友好。
解决对策:
改动源程序代码再进行调试,一次次的尝试,最终确定看起来效果最好的界面。
(4)窗口切换后按任意键不能返回到主界面。
解决对策:
其实程序已经返回了主界面程序,还没显示。
在窗口切换程序后面在调用一次显示函数。
2、经验体会
编写程序时:
(1)确定大体框架。
用流程图或N-S图表示整个程序结构。
(2)搞清算法。
确定写此算法的最简单的编程语言。
(3)编写程序时,每编完一个功能马上进行调试(必要时加一些辅助代码),调试通过后再编写下一个功能,这样很容易将错误找出。
(4)不管多大的程序,只要一个功能一个功能的实现,都会完成的。
不要畏惧!
七、程序测试
1、测试的结果及解释分析
(1)启动应用程序时的界面显示:
显示要求输入谱文件名,输入‘quit’可对出程序。
(2)输入文件名后的显示:
屏幕上方显示的是软件操作说明请按‘h’键;横坐标是道值,纵坐标是计数;下方显示光标处的道值、能量和计数。
(3)按‘h’键后的显示(操作说明):
(4)刻度过后的显示:
选定峰处的面积和净峰面积以及光标处的能量都会显示在屏幕上。
(5)相应元素对应的能量、面积以及净峰面积:
八、用户手册
1、中文用户手册:
打开Spectrum.exe程序。
程序提示输入谱文件的名称,输入Gss5-6.mca或其他存在的文件名可进入主界面,若指定文件不存在将提示重新输入,输入quit则退出程序。
主界面操作:
按键功能
w和s上下缩放谱线
a和d左右移动光标
z和x快速移动光标
e载入元素文件
c载入标定文件
m执行谱线光滑
n计算峰面积(如果还未载入元素文件或标定文件,则会提示选择相应文件)
p在当前光标位置寻峰,如果找到,同时计算峰面积(显示在屏幕右上角)
r还原谱线到刚刚载入的状态
f将谱线数据以ASCII码文件存储(保存文件名为SPECTRUM.TXT)
h操作说明
q退出程序
1~3选择谱线光滑因子(1->3点光滑,2->5点光滑,3->7点光滑)
4~7选择寻峰宽度因子(4->M取3,5->M取4,6->M取5,7->M取6)
0和9点线切换
2、Englishusermanual:
Openspectrumprocessingapplications.
Programfileshintinputspectrum,inputGss5-6.mcaorotherexistingmaininterfacecanenterfilename,ifthespecifiedfiledoesnotexistwillente