成都理工大学核辐射数据处理程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

程序设计课程设计(论文)设计(论文)题目谱的显示、谱光滑、定性分析程序学院名称核技术与自动化工程学院专业名称辐射防护与环境工程学生姓名蒋卓辰学生学号201106080116任课教师马永红设计(论文)成绩教务处制2015年1月10日一、实习目的学习使用各种编程软件,利用计算机工具开展专业信息处理工作。使用面向对象编程思想实现谱数据处理功能以及谱显示功能。二、人员组成及分工本人题目为:谱的显示、谱光滑、定性分析程序具体要求:用算术滑动平均法实现谱光滑一阶导数法寻峰位根据能量刻度系数计算峰位的能量,检索元素三、实习计划1.首先进行MFC绘图区域的学习和了解,实现基本绘图功能2.建立单文档MFC程序,设计一个合理美观的工作区3.实现文件打开读取功能,并能打开不同文件4.进行谱数据处理的算法编写5.编写成谱图形功能并给出处理结论四、基本原理1、重心法选取加权因子和归一化因子,使光滑后的数据成为原来数据的重心。常见的有5点和7点光滑。5点法:)464(1612112iiiiiidatadatadatadatadatadata7点法:)61520156(641321123iiiiiiiidatadatadatadatadatadatadatadata2、简单比较法(极值定峰法、IF函数找峰法)a、峰的定义:满足miiimidatadatakdatadata,然后在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的确定:ririmrililimlidatakdatadatadatakdatadata)()(3、线性本底法计算总面积:RLiidataS计算本底面积:2)1(*)(LRdatadataBRL计算净峰面积:BSA五、主要工作介绍1.建立单文档类MFC可执行程序2.建立绘图区函数,初始化绘图设备3.添加文件打开虚函数4.尝试读取mca文件六、流程及程序1、模块介绍(1)主程序的流程2、程序流程(1)函数及变量定义#defineMAX_ELEMENT_NUM20#defineScreenHeight480#defineScreenWidth640#defineLineHeight370#defineLineWidth500开始BGI初始化调用显示未处理前谱线函数及处理谱函数NY谱文件是否打开?等待Switch(按键):各按键作用函数调用End#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)程序#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;w=input('inputthewidthofthefilterwindow:');fori=1:wk=i-ceil(w/2);endarray_z=zeros(count+2*floor(w/2),1);fori=1:count+2*floor(w/2)if(i=floor(w/2))array_z(i)=array(-i+ceil(w/2));elseif(icount+floor(w/2))array_z(i)=array(-(i-floor(w/2))+2*count+1);elsearray_z(i)=array(i-floor(w/2));endenda1=zeros(1,count);forj=1:wSMZ(j)=array_z(i+j-1);enda1(i)=SMZ*fwk;enddisp('下面开始输入对称零面积法寻峰');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;%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);fori=1:count+2*m1if(i=m1);temporary(i)=a1(ceil(w/2)-i);elseif(i(count+m1))temporary(i)=a1(-(i-m1)+2*count+1);elsetemporary(i)=a1(i-m1);endendA=zeros(count,1);fori=ceil(w/2):count+m1;forj=-(w-1)/2:(w-1)/2;ifabs(j)=(H-1)/2;T=a;elseT=-b;endA(i-m1,1)=A(i-m1,1)+T*temporary(i+j);endendfori=1:count;%数据转制SSiFENZI(i,1)=A(i,1);endB=zeros(count,1);fori=ceil(w/2):count+m1;forj=-(w-1)/2:(w-1)/2;ifabs(j)=(H-1)/2;T=a^2;elseT=b^2;endB(i-m1,1)=B(i-m1,1)+T*temporary(i+j);endendfori=1:count;SSiFENMU(i,1)=B(i,1);endfori=1:count;SS(i,1)=SSiFENZI(i,1)/sqrt(SSiFENMU(i,1));endp=1;q=1;f=30;fori=1:count;ifSSiFENZI(i)0;fpdatablow(p,1)=i;fpdatablow(p,2)=SSiFENZI(i);p=p+1;elseifSS(i)f;fpdataup(q,1)=i;fpdataup(q,2)=SSiFENZI(i);q=q+1;endendp=1;fori=2:length(fpdataup(:,1))-1;iffpdataup(i,2)fpdataup(i+1,2)&&fpdataup(i,2)fpdataup(i-1,2);mpeak(p,1)=fpdataup(i,1);p=p+1;endendfori=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(1,length(mpeak));fori=1:length(mpeak)forj=(zuobianjic(i)+1):(youbianjic(i)-1)y1(i)=y1(i)+a1(j);ends(i)=y1(i)-(youbianjie(i)-1)*(a1(zuobianjie(i)))/2;endendenddisp(‘各个峰面积:’);sprintf('%d',s)七、体会在本次程序设计实习中,我再次学习了MFC编程方法。过程中,我遇到了许多曾经都没有遇到的问题,比如文件的打开和读取,无法绘图等。在与同学讨论后一步一步解决这些问题的同时,渐渐进一步的熟悉掌握了谱数据处理的方法和编程思想。对于本专业同学们而言,这次实习是扩展我专业同学技能的大好机会,通过本次程序设计,可以加强对核数据处理方法的理解,并且锻炼了处理的能力。在编写的过程中要有良好的格式及注释习惯,以免一段时间甚至几分钟后就看不懂自己的思路。最后,衷心感谢在本次程序设计实习过程中,马永红老师细心的指导,您不厌其烦地解答我的各种疑问,并且帮助我寻找原始数据的数据格式和数据类型。我还要感谢芦瑞琪、袁子程同学对我在思路上的重要启发,谢谢你们给予我的大力支持!学生学习心得由于之前对编程并不是很了解,导致本次程序设计遇到了很多问题自己都无法解决,在这个过程中,通过不断地询问老师以及和同学讨论,

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功