当前位置:文档之家› 核数据处理

核数据处理

核数据处理一、实习目的1、掌握图形程序的编写技能与技巧;2、掌握文件读写函数的使用;3、理解整个谱数据处理的流程;4、进一步掌握对常用核数据处理的基本方法5、掌握软件设计所需的基本动手能力,解决实际问题。

二、实习内容1、读谱数据文件、保存光滑后的谱数据文件,文件名可选2、显示谱数据,各算法要以函数方式实现3、显示分析谱段范围内,寻得的各峰位道址、能量、对应的元素名称4、显示寻峰及峰面积计算结果5、光滑、寻峰宽度2k+1应在5、7之间可选,讨论最佳参数。

三、需求分析1、输入、输出的内容和形式(1)输入:a、打开应用软件,弹出要求输入谱数据文件名对话框。

b、需要刻度谱线时,分别按e键和c键输入元素文件名和能量刻度文件名。

c、人机交互时,采用键盘按键方式将命令传给程序(具体操作:在运行程序后按h键即可弹出操作说明对话框)。

(2)输出:a、屏幕显示谱线;光标位置及光标处的道址、能量和计数;屏幕上方显示“Softwareinstructions please input 'h'”。

b、当谱线被刻度好后,按n键会弹出相应元素对应的能量、面积和净峰面积。

c、按h键弹出应用程序操作说明对话框。

2、预期功能、界面(1)显示输入谱文件名对话框;在文件名输入正确时,能够正确读取文件中的数据。

(2)正确显示谱线以及在刻度后显示道址、能量及计数。

(3)显示相应元素对应的能量、面积和净峰面积对话框。

(4)达到谱数据光滑的效果。

(5)采用键盘输入命令,使屏幕:a、即时显示光标的位置以及对应的道址、能量及计数。

b、即时显示不同幅度放大倍数时的谱线形状。

c、即时显示不同光滑次数处理后的谱线微细结构(只有在幅度放大倍数很大时光滑效果才明显)。

d、即时显示谱线的点和线的切换。

3、测试数据(1)文件读入是否正确。

(2)谱数据段的选择功能是否实现。

(3)move和curse的边界值是否设置妥当。

(5)道址和能量的换算是否正确。

(6)寻峰是否正确。

(7)最小能量差的计算是否正确。

(8)根据能量查找核素是否正确。

(9)净峰面积的计算是否有缺陷。

(10)检查谱线幅度放大时是否会出现异常。

四、概要设计1、开发工具: Turbo C 。

2、主要算法: (1)、重心法:选取加权因子和归一化因子,使光滑后的数据成为原来数据的重心。

常见的有5点和7点光滑。

5点法: )464(1612112++--++++=i i i i i i data data data data data data 7点法:)61520156(641321123+++---++++++=i i i i i i i i data data data data data data data data (2)、简单比较法(极值定峰法、IF 函数找峰法):a 、峰的定义:满足m i i i m i data data k data data +->-<,然后在data i-m 至data i+m中找最大值道。

b 、常用的:5点、7点极大值法。

c 、一般,用R=N 0/N b ≥R c 确定峰是否有意义。

N 0为净峰幅度与基底之和,N b 为基底计数,R c 为设定值。

d 、k :找峰阈值,根据高斯统计概率分布,一般k 取值:1—1.5。

峰的左右边界道i-L 和i+R 的确定:ri r i m r i l i l i m l i data k data data data k data data ++++----+≥+≥)()((3)、线性本底法: 计算总面积:∑==RLi idata S计算本底面积:2)1(*)(+-+=L R data data B R L 计算净峰面积:B S A -= 3、主程序的流程及各模块之间的关系。

主程序流程:五、详细设计1、函数及变量定义:#define MAX_ELEMENT_NUM 20#define ScreenHeight 480#define ScreenWidth 640#define LineHeight 370#define LineWidth 500#define LineLeftX ((ScreenWidth-LineWidth)/2)#define LineRightX (LineLeftX+LineWidth)#define LineTopY 40#define LineBottomY (LineTopY+LineHeight)FILE* dataFile;int gdriver,gmode;unsigned long dataTable[1024],maxVal;int DisPos[500];/*实际显示的数据*/int OriPos[500];/*未处理前的数据*/int cursorX;float zoom;unsigned int cursorChannel;unsigned char dispLine;unsigned char energyMarked,elementLoaded,SpectrumLoaded,peakSeeked,cursorPeakseeked;int smoothLevel = 1,peakSeekLevel = 9;float a,b;/*能量刻度方程*/char element[MAX_ELEMENT_NUM][2];unsigned char numOfElement,cursorElement;float elementEnergy[MAX_ELEMENT_NUM];unsigned int peakBound[MAX_ELEMENT_NUM][2];unsigned long elementArea[MAX_ELEMENT_NUM],elementNetArea[MAX_ELEMENT_NUM];unsigned int cursorPeakBoundLeft,cursorPeakBoundRight;unsigned long cursorPeakArea,cursorPeakNetArea;2、程序中用到的重要数据(1)cursorEnergy = a + b*cursorChannel;Channel:%4d E nergy:%7.4fMev Count:%-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;(1)void textbackground(int color); //设置背景颜色:void textcolor(int color); //设置字符颜色:②数据-坐标转化函数(2)设置屏幕为图形模式:void initgraph(int *gdriver, int *gmode, char *path);(3)画点函数void far putpixel(int x, int y, int color);该函数表示有指定的象素画一个按color所确定颜色的点。

Color为显示点的颜色,对x, y是指图形象元的坐标。

(4)void far line(int x0, int y0, int x1, int y1); //画一条从点(x0, y0)到(x1, y1)的直线(5) void far rectangle(int x1, int y1, int x2, inty2); //以(x1, y1)为左上角, (x2, y2)为右下角画一个矩形框。

(6) void far floodfill(int x, int y, int border);其中: x, y为封闭图形内的任意一点。

border为边界的颜色, 也就是封闭图形轮廓的颜色。

调用了该函数后, 将用规定的颜色和图模填满整个封闭图形。

注意::1. 如果x或y取在边界上, 则不进行填充。

2. 如果不是封闭图形则填充会从没有封闭的地方溢出去, 填满其它地方。

3. 如果x或y在图形外面, 则填充封闭图形外的屏幕区域。

4. 由border指定的颜色值必须与图形轮廓的颜色值相同, 但填充色可选任意颜色。

4、函数的调用关系图。

六、调试分析1、调试过程中遇到的问题及解决对策(1)Win7操作系统不支持wintc的运行功能,也不支持Turbo C。

因为Win7操作系统不支持程序运行后的全屏显示。

解决对策:下载DOSBox软件即可解决此问题。

(2)文件不能导入。

解决对策:把文件与应用软件放在同一个文件里。

(3)界面不友好。

解决对策:改动源程序代码再进行调试,一次次的尝试,最终确定看起来效果最好的界面。

(4)窗口切换后按任意键不能返回到主界面。

解决对策:其实程序已经返回了主界面程序,还没显示。

在窗口切换程序后面在调用一次显示函数。

2、经验体会编写程序时:(1)确定大体框架。

用流程图或N-S图表示整个程序结构。

(2)搞清算法。

确定写此算法的最简单的编程语言。

(3)编写程序时,每编完一个功能马上进行调试(必要时加一些辅助代码),调试通过后再编写下一个功能,这样很容易将错误找出。

(4)不管多大的程序,只要一个功能一个功能的实现,都会完成的。

不要畏惧!七、程序测试1、测试的结果及解释分析(1)启动应用程序时的界面显示:(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、English user manual:Open spectrum processing applications.Program files hint input spectrum, input Gss5-6.mca or other existing main interface can enter filename, if the specified file does not exist will enter again,Enter 'quit' to exit procedure.Main interface:Key: functional:w (s) Fluctuation zoom spectral lines.a (d) Move the cursor around.z(x) Fast moving the cursor.e Load element files.c Load calibration files.m Execute spectral lines and smooth.n Peak area calculation.p At present, the cursor position search, calculation, if found peak area.r Reduction of load spectrum line to just.f Will spectral lines with ASCII file data storage(save the file name SPECTRUM.TXT ).h Operating instructions.q Exit procedure.1-3 Choose spectral lines smooth factors.4-7 Select search peak width factor.0(9) The switch dots and lines.。

相关主题