核数据处理课程设计

上传人:wt****50 文档编号:37940305 上传时间:2018-04-24 格式:DOC 页数:11 大小:248.50KB
返回 下载 相关 举报
核数据处理课程设计_第1页
第1页 / 共11页
核数据处理课程设计_第2页
第2页 / 共11页
核数据处理课程设计_第3页
第3页 / 共11页
核数据处理课程设计_第4页
第4页 / 共11页
核数据处理课程设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《核数据处理课程设计》由会员分享,可在线阅读,更多相关《核数据处理课程设计(11页珍藏版)》请在金锄头文库上搜索。

1、核数据处理一、实习目的一、实习目的1、掌握图形程序的编写技能与技巧; 2、掌握文件读写函数的使用; 3、理解整个谱数据处理的流程; 4、进一步掌握对常用核数据处理的基本方法 5、掌握软件设计所需的基本动手能力,解决实际问题。二、实习内容二、实习内容1、读谱数据文件、保存光滑后的谱数据文件,文件名可选 2、显示谱数据,各算法要以函数方式实现 3、显示分析谱段范围内,寻得的各峰位道址、能量、对应的元素名称 4、显示寻峰及峰面积计算结果 5、光滑、寻峰宽度 2k+1 应在 5、7 之间可选,讨论最佳参数。三、需求分析三、需求分析1、输入、输出的内容和形式(1)输入: a、打开应用软件,弹出要求输入谱

2、数据文件名对话框。 b、需要刻度谱线时,分别按 e 键和 c 键输入元素文件名和能量刻度文件名。 c、人机交互时,采用键盘按键方式将命令传给程序(具体操作:在运行程序后按 h 键 即可弹出操作说明对话框) 。(2)输出: a、屏幕显示谱线;光标位置及光标处的道址、能量和计数;屏幕上方显示“Software instructions please input h” 。 b、当谱线被刻度好后,按 n 键会弹出相应元素对应的能量、面积和净峰面积。 c、按 h 键弹出应用程序操作说明对话框。 2、预期功能、界面(1)显示输入谱文件名对话框;在文件名输入正确时,能够正确读取文件中的数据。(2)正确显示谱

3、线以及在刻度后显示道址、能量及计数。(3)显示相应元素对应的能量、面积和净峰面积对话框。 (4)达到谱数据光滑的效果。 (5)采用键盘输入命令,使屏幕: a、即时显示光标的位置以及对应的道址、能量及计数。 b、即时显示不同幅度放大倍数时的谱线形状。 c、即时显示不同光滑次数处理后的谱线微细结构(只有在幅度放大倍数很大时光滑效 果才明显) 。 d、即时显示谱线的点和线的切换。 3、测试数据(1)文件读入是否正确。 (2)谱数据段的选择功能是否实现。 (3)move 和 curse 的边界值是否设置妥当。 (4)谱数据光滑时前后几个数据(不能进行光滑)是否与光滑次数的关系对应好。(5)道址和能量的

4、换算是否正确。 (6)寻峰是否正确。 (7)最小能量差的计算是否正确。 (8)根据能量查找核素是否正确。 (9)净峰面积的计算是否有缺陷。 (10)检查谱线幅度放大时是否会出现异常。四、概要设计四、概要设计1、开发工具: Turbo C。 2、主要算法: (1) 、重心法:选取加权因子和归一化因子,使光滑后的数据成为原来数据的重心。常见 的有 5 点和 7 点光滑。5 点法: )464(1612112iiiiiidatadatadatadatadatadata7 点法:)61520156(641321123iiiiiiiidatadatadatadatadatadatadatadata(2)

5、、简单比较法(极值定峰法、IF 函数找峰法):a、峰的定义:满足,然后在 datai-m至miiimidatadatakdatadatadatai+m中找最大值道。 b、常用的:5 点、7 点极大值法。 c、一般,用 R=N0/NbRc确定峰是否有意义。N0为净峰幅度与基底之和,Nb为基底 计数,Rc为设定值。 d、k:找峰阈值,根据高斯统计概率分布,一般 k 取值:11.5。峰的左右边界道 i-L 和 i+R 的确定:ririmrililimli datakdatadatadatakdatadata )()((3) 、线性本底法:计算总面积: RLiidataS计算本底面积:2) 1(*)(

6、LRdatadataBRL计算净峰面积:BSA 3、主程序的流程及各模块之间的关系。开始BGI 初始化调用显示未处理前谱线函数及处理谱函数NY主程序流程:谱文件是否打开?等待Switch(按键):各按键作用函数调用End主程序开始第一次画谱线函数originalLine()标注峰drawPeak()画坐标drawCoordinate()文件读写函数寻峰elementPeakArea()计算峰面积calculatePeakArea()找峰边界findPeakBoundary()指定道值找峰findPeakByChannel()光标当前位置寻峰cursorPeakArea()能量刻度energyT

7、oChannel()计算峰面积calculatePeakArea()计算峰面积calculatePeakArea()Key?缩放谱线w(s )移动光标a(d)快速移动光标z(x)载入元素文件e载入标定文件c计算峰面积nKey?谱光滑m光标位置寻峰p还原谱线到刚刚载入的状态r将谱线数据以ASCII 码文件存储f点线切换0(9)退出程序q各模块之间的关系:等待有键按下?设定键被按下未设定键被按下五、详细设计五、详细设计1、函数及变量定义: #define MAX_ELEMENT_NUM 20#define ScreenHeight 480 #define ScreenWidth 640 #defi

8、ne 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 dataTable1024,maxVal; int DisPos500;/*实际显示的数据*/ int OriPos500;/*

9、未处理前的数据*/ 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 elementMAX_ELEMENT_NUM2; unsigned char numOfElement,cursorEleme

10、nt; float elementEnergyMAX_ELEMENT_NUM; unsigned int peakBoundMAX_ELEMENT_NUM2; unsigned long elementAreaMAX_ELEMENT_NUM,elementNetAreaMAX_ELEMENT_NUM; unsigned int cursorPeakBoundLeft,cursorPeakBoundRight; unsigned long cursorPeakArea,cursorPeakNetArea; 2、程序中用到的重要数据 (1)cursorEnergy = a + b*cursorCh

11、annel; Channel:%4dEnergy:%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;cur

12、sorPeakNetArea = cursorNetArea; cursorPeakseeked = 1;peakSeeked = 0; 3、函数的说明 (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); 该函数表示有指定的象素画一个

13、按 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 为边界的颜

14、色, 也就是封闭图形轮廓的颜 色。调用了该函数后, 将用规定的颜色和图模填满整个封闭图形。 注意::1. 如果 x 或 y 取在边界上, 则不进行填充。 2. 如果不是封闭图形则填充会从没有封闭的地方溢出去, 填满其它地方。 3. 如果 x 或 y 在图形外面, 则填充封闭图形外的屏幕区域。 4. 由 border 指定的颜色值必须与图形轮廓的颜色值相同, 但填充色可选任意颜色。 4、函数的调用关系图。主程序开始第一次画谱线函数originalLine()标注峰drawPeak()画坐标drawCoordinate()文件读写函数寻峰elementPeakArea()计算峰面积calculat

15、ePeakArea()找峰边界findPeakBoundary()指定道值找峰findPeakByChannel()光标当前位置寻峰cursorPeakArea()能量刻度energyToChannel()计算峰面积calculatePeakArea()六、调试分析六、调试分析1、调试过程中遇到的问题及解决对策 (1)Win7 操作系统不支持 wintc 的运行功能,也不支持 Turbo C。因为 Win7 操作系统不支持 程序运行后的全屏显示。 解决对策:下载 DOSBox 软件即可解决此问题。 (2)文件不能导入。 解决对策:把文件与应用软件放在同一个文件里。 (3)界面不友好。 解决对策

16、:改动源程序代码再进行调试,一次次的尝试,最终确定看起来效果最好的界面。(4)窗口切换后按任意键不能返回到主界面。 解决对策:其实程序已经返回了主界面程序,还没显示。在窗口切换程序后面在调用一次 显示函数。2、经验体会 编写程序时: (1)确定大体框架。用流程图或 N-S 图表示整个程序结构。 (2)搞清算法。确定写此算法的最简单的编程语言。 (3)编写程序时,每编完一个功能马上进行调试(必要时加一些辅助代码) ,调试通过后再编 写下一个功能,这样很容易将错误找出。 (4)不管多大的程序,只要一个功能一个功能的实现,都会完成的。不要畏惧!七、程序测试七、程序测试1、测试的结果及解释分析 (1)启动应用程序时的界面显示:显示要求输入谱文件名,输入quit可对出程序。 (2)输入文件名后的显示:屏幕上方显示的是软件操作说明请

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号