版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 程序设计 课程设计(论文)设计(论文)题目 谱的显示、谱光滑、定性分析程序 学院名称 核技术与自动化工程学院 专业名称 辐射防护与环境工程 学生姓名 蒋卓辰 学生学号 201106080116 任课教师 马永红 设计(论文)成绩 教务处 制2015年 1 月 10 日一、实习目的学习使用各种编程软件,利用计算机工具开展专业信息处理工作。使用面向对象编程思想实现谱数据处理功能以及谱显示功能。二、人员组成及分工本人题目为:谱的显示、谱光滑、定性分析程序具体要求:用算术滑动平均法实现谱光滑一阶导数法寻峰位根据能量刻度系数计算峰位的能量,检索元素三、实习计划1. 首先进行MFC绘图区域的学习和了解,
2、实现基本绘图功能2. 建立单文档MFC程序,设计一个合理美观的工作区3. 实现文件打开读取功能,并能打开不同文件4. 进行谱数据处理的算法编写5. 编写成谱图形功能并给出处理结论 四、基本原理1、重心法选取加权因子和归一化因子,使光滑后的数据成为原来数据的重心。常见的有5点和7点光滑。5点法: 7点法:2、简单比较法(极值定峰法、IF函数找峰法)a、峰的定义:满足,然后在datai-m至datai+m中找最大值道。b、常用的:5点、7点极大值法。c、一般,用R=N0/NbRc确定峰是否有意义。N0为净峰幅度与基底之和,Nb为基底计数,Rc为设定值。d、k:找峰阈值,根据高斯统计概率分布,一般k
3、取值:11.5。峰的左右边界道i-L和i+R的确定:3、线性本底法计算总面积:计算本底面积:计算净峰面积:五、主要工作介绍1. 建立单文档类MFC可执行程序2. 建立绘图区函数,初始化绘图设备3. 添加文件打开虚函数4. 尝试读取mca文件六、流程及程序1、模块介绍(1)主程序的流程开始BGI初始化调用显示未处理前谱线函数及处理谱函数NY谱文件是否打开?等待Switch(按键):各按键作用函数调用End2、程序流程(1)函数及变量定义#define MAX_ELEMENT_NUM 20#define ScreenHeight 480#define ScreenWidth 640#define
4、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;/*未处理前的数据*/int
5、 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,cursorElement;float elementEnerg
6、yMAX_ELEMENT_NUM;unsigned int peakBoundMAX_ELEMENT_NUM2;unsigned long elementAreaMAX_ELEMENT_NUM,elementNetAreaMAX_ELEMENT_NUM;unsigned int cursorPeakBoundLeft,cursorPeakBoundRight;unsigned long cursorPeakArea,cursorPeakNetArea;(2)程序#define MAX_ELEMENT_NUM 20 #define ScreenHeight 480 #define ScreenW
7、idth 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 dataTable1024,maxVal; int DisPos500;/*实际显示的数据*/ i
8、nt OriPos500;/*未处理前的数据*/ 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 numOfElem
9、ent,cursorElement; 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;w=input('input the width of
10、 the filter window:'); for i=1:w k=i-ceil(w/2); end array_z = zeros(count+2*floor(w/2),1); for i=1:count+2*floor(w/2) if(i<=floor(w/2) array_z(i)=array(-i+ceil(w/2); elseif(i>count+floor(w/2) array_z(i)=array(-(i-floor(w/2)+2*count+1); else array_z(i)=array(i-floor(w/2); end end a1=zeros(1
11、,count); for j=1:w SMZ(j)=array_z(i+j-1); end a1(i)=SMZ*fwk; end disp('下面开始输入对称零面积法寻峰'); disp('下面开始输入对称零面积法的各参数'); disp('如果是方波的话有 k=1'); K=input('请输入参数 k=?:n'); H=input('请输入参数半宽度 H=?(正奇数):n'); m=(2*K+1)*H-1)/2; w=2*m+1; b=input('请输入参数 b=?:n'); a=2*K*b;
12、 %K=4; %H=2*K+1; %w=3*H; %b=1; %a=2*K*b; m1=floor(w/2); temporary=zeros(count+2*m1),1); for i=1:count+2*m1 if(i<=m1); temporary(i)=a1(ceil(w/2)-i); elseif(i>(count+m1) temporary(i)=a1(-(i-m1)+2*count+1); else temporary(i)=a1(i-m1); end end A=zeros(count,1); for i=ceil(w/2):count+m1; for j=-(w-
13、1)/2:(w-1)/2; if abs(j)<=(H-1)/2; T=a; else T=-b; end A(i-m1,1)= A(i-m1,1)+T*temporary(i+j); end end for i=1:count; %数据转制 SSiFENZI(i,1)=A(i,1); end B=zeros(count,1); for i=ceil(w/2):count+m1; for j=-(w-1)/2:(w-1)/2; if abs(j)<=(H-1)/2; T=a2; else T=b2; end B(i-m1,1)=B(i-m1,1)+T*temporary(i+j);
14、 end end for i=1:count; SSiFENMU(i,1)=B(i,1); end for i=1:count; SS(i,1)=SSiFENZI(i,1)/sqrt(SSiFENMU(i,1); end p=1; q=1; f=30; for i=1:count; if SSiFENZI(i)<0; fpdatablow(p,1)=i; fpdatablow(p,2)=SSiFENZI(i); p=p+1; elseif SS(i)>f; fpdataup(q,1)=i; fpdataup(q,2)=SSiFENZI(i); q=q+1; end end p=1;
15、 for i=2:length(fpdataup(:,1)-1; if fpdataup(i,2)>fpdataup(i+1,2)&&fpdataup(i,2)>fpdataup(i-1,2); mpeak(p,1)=fpdataup(i,1); p=p+1; end end for i=1:length(mpeak(:,1); j=mpeak(i); t=mpeak(i); peak(i)=t+(a1(t+1)-a1(t-1)/(2*a1(t)-a1(t+1)-a1(t-1)/2; disp('计算峰面积;下面采用总峰面积法'); y1=zeros
16、(1,length(mpeak); for i=1:length(mpeak) for j=(zuobianjic(i)+1):(youbianjic(i)-1) y1(i)=y1(i)+a1(j); end s(i)=y1(i)-(youbianjie(i)-1)*(a1(zuobianjie(i)/2; end end end disp(各个峰面积:); sprintf('%d',s)七、体会在本次程序设计实习中,我再次学习了MFC编程方法。过程中,我遇到了许多曾经都没有遇到的问题,比如文件的打开和读取,无法绘图等。在与同学讨论后一步一步解决这些问题的同时,渐渐进一步的熟悉掌握了谱数据处理的方法和编程思想。对于本专业同学们而言,这次实习是扩展我专业同学技能的大好机会,通过本次程序设计,可以加强对核数据处理方法的理解,并且锻炼了处理的能力。在编写的过程中要有良好的格式及注释习惯,以免一段时间甚至几分钟后就看不懂自己的思路。最后,衷心感谢在本次程序设计实习过程中,马永红老师细心的指导,您不厌其烦地解答我的各种疑问,并且帮助我寻找原始数据的数据格式和数据类型。我还要感谢芦瑞琪、袁子程同学对我在思路上的重要启发,谢谢你们给予我的大力支持!学生学习心得由于之前对编程并不是很了解,导致本次程序设计遇到了很多问题自己都无法解决,在这个过程中,通过不断地询问老师以及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版牧业养殖技术引进与推广合同3篇
- 二零二五年钢结构工程居间验收服务合同3篇
- 2025年校园热泵热水设备供应合同样本2篇
- 2025版学校图书采购与配送服务承包合同3篇
- 2025版宣传片制作与宣传合同3篇
- 2025版塔吊租赁、安装与安全维护服务合同3篇
- 全新二零二五年度广告制作与发布合同6篇
- 家用纺织品智能温控技术考核试卷
- 个人职业规划社群考核试卷
- 2025版学校校园安全防范系统建设承包合同3篇
- 2024年山东省泰安市高考物理一模试卷(含详细答案解析)
- 肿瘤患者管理
- 2025春夏运动户外行业趋势白皮书
- 《法制宣传之盗窃罪》课件
- 通信工程单位劳动合同
- 2024年医疗器械经营质量管理规范培训课件
- 2024年计算机二级WPS考试题库380题(含答案)
- 高低压配电柜产品营销计划书
- 2024年4月自考02202传感器与检测技术试题
- 新入职员工培训考试附有答案
- 外观质量评定报告
评论
0/150
提交评论