数据处理与能谱分析.doc_第1页
数据处理与能谱分析.doc_第2页
数据处理与能谱分析.doc_第3页
数据处理与能谱分析.doc_第4页
数据处理与能谱分析.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据处理与能谱分析随着计算机技术的发展,利用计算机处理实验数据也越来越常见,随之如来就产生了许多的软件如:Matlab 、 Excel、CAD等等, 但一般这些软件在处理物质放射性衰变时都比较繁琐,因此在处理放射性物质衰变时的数据时,就必须自己依照其规律制作数据处理软件来探究该物质的各种性质,从而来确定该物质的类型以及其运用。我们要使用C+平台和C语言来制作软件及编写对应的响应函数,在进行实验时我们把我们利用专业仪器测得的数据按照要求记录并保存在一个TXT文件中,使用C语言来编写程序对文件里的数据进行读写和操作;例如:调用文件打开函数(fopen)和关闭函数(fclose)语句来对文件进行打开和关闭处理,调用读写语句对文件内的数据进行察看和编写fscanf(fp,”%d %d”,&I,&t)、fprintf(fp,”%d %d”,I,t)。制作EXE软件来对数据进行图谱显示:在相应的操作界面放置相应的显示框图和对应的按钮,如下图然后给框图和按钮赋地址,并添加相应的变量和相应函数。最后组建编译运行。软件运行后先点击数据读写按钮在点击原始图谱按钮最后点击五点平滑按钮就得到了该物质数据图谱。如下图所示:注:横坐标为道址、纵坐标为计数率 添加相应的数据输出框和按钮如:峰值、道值、面积。最后再添加相应的响应函数,再编译运行。得到如下图所示的图谱:至此我们利用C语言对数据处理和能谱分析已经结束,最后我们在根据图谱的形状、峰值、道值以及各个部分的面积来确定物质衰变的性质和物质本身的性质,最终来确定放射性物质的用途。附件:部分响应函数数据读写程序:void CShiyanDlg:OnReadfile() / TODO: Add your control notification handler code hereFILE *fp;int datanum=0; int i;int data1,data2;if(fp=fopen(090623.txt,r)=NULL) printf(Cannot open the file.n); exit(0); while(!feof(fp) fscanf(fp,%d %d,&data1,&data2);datadatanum+=data2;fscanf(fp,n); for(i=0;i2048;i+) if( i2045) data_phi=datai; else data_phi=(datai-2+4*datai-1+6*datai+4*datai+1+datai+2)*1.0/16.0; printf(%d %fn,i+1,data_phi); fclose(fp); if(fp=fopen(out.txt,w)=NULL) printf(file open error.n); exit(0);for(i=0;iGetDC(); pDC-SetMapMode(MM_ANISOTROPIC); CRect rect; double scale; GetDlgItem(IDC_P1)-GetWindowRect(&rect); scale=25.4*10/pDC-GetDeviceCaps(LOGPIXELSX);CDC MemDC; CBitmap MemBitmap; MemDC.CreateCompatibleDC(NULL); MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height(); MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255); max=data0;for(int i=1;imax ) max=datai; for ( i = 0;iSetPixel(xViewport,rect.Height()-yViewport-1,RGB(255,0,0); pDC-BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); MemBitmap.DeleteObject(); MemDC.DeleteDC(); pDC-DeleteDC(); 五点平滑图谱响应函数:void CShiyanDlg:OnWudianpinghua() / TODO: Add your control notification handler code heredouble xViewport,yViewport;float max;CWnd *pWnd=GetDlgItem(IDC_P2); CDC *pDC =pWnd-GetDC(); pDC-SetMapMode(MM_ANISOTROPIC); CRect rect; double scale; GetDlgItem(IDC_P2)-GetWindowRect(&rect); scale=25.4*10/pDC-GetDeviceCaps(LOGPIXELSX);CDC MemDC; CBitmap MemBitmap; MemDC.CreateCompatibleDC(NULL); MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height(); MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255); max=data_ph0;for(int i=1;imax ) max=data_phi; for ( i = 0;iSetPixel(xViewport,rect.Height()-yViewport-1,RGB(255,0,0); pDC-BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); MemBitmap.DeleteObject(); MemDC.DeleteDC(); pDC-DeleteDC(); 道值寻峰函数: void CShiyanDlg:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCRect rect1;CWnd *pWnd=GetDlgItem(IDC_P1);pWnd-GetWindowRect(rect1);ScreenToClient(&rect1);CDC *pDC =pWnd-GetDC(); if (rect1.PtInRect(point) pDC-MoveTo(point.x-rect1.left,0); pDC-LineTo(point.x-rect1.left,rect1.Height();if(LButton_Clicked=0)CPen lpen(PS_SOLID, 1, RGB(255,255,255);CPen* pOldPen = pDC-SelectObject(&lpen); pDC-MoveTo(x_old-rect1.left,0); pDC-LineTo(x_old-rect1.left,rect1.Height();lpen.DeleteObject(); x_old=point.x;y_old=point.y;elseLButton_Clicked=0;x_old=point.x;y_old=point.y;CDialog:OnLButtonUp(nFlags, point);void CShiyanDlg:OnButton1() / TODO: Add your control notification handler code hereLButton_Clicked=1;left_flag=1;Left_x=x_old;Left_y=y_old;void CShiyanDlg:OnButton2() / TODO: Add your control notification handler code hereint i,j,xl,xr,max=0,maxi=0;float newx;CRect rect1;CWnd *pWnd=GetDlgItem(IDC_P1);pWnd-GetWindowRect(rect1);ScreenToClient(&rect1);CDC *pDC =pWnd-GetDC(); RButton_Clicked=1;if(left_flag=1)Right_x=x_old; Right_y=y_old; /GetDlgItem(IDC_P1)-GetWindowRect(&rect1); xl=2048*(Left_x-rect1.left)/rect1.Width(); xr=2048*(Right_x-rect1.left)/rect1.Width(); for(i=xl+2;idatai-2) & (datai-1.0*sqrt(datai)datai+2)for(j=i-2;jmax) max=dataj; maxi=j; m_e3=maxi; UpdateData(false);newx=maxi*rect1.Width()/2048;CDC *pDC =pWnd-GetDC(); CPen lpen(PS_SOLID,1,RGB(0,0,255);CPen* pOldPen = pDC-SelectObject(&lpen); /scale=25.4*10/pDC-GetDeviceCaps(LOGPIXELSX);pDC-MoveTo(newx,0); pDC-LineTo(newx,rect1.Height();lpen.DeleteObject(); RButton_Clicked=0;LButton_Clicked=0;void CShiyanDlg:OnZuodaozhi() / TODO: Add your control notification handler code hereCRect rect1;int chx; CWnd *pWnd=GetDlgItem(IDC_P1);pWnd-GetWindowRect(rect1);ScreenToClient(&rect1);chx=2048*(x_old-rect1.left)/rect1.Width();m_e1=chx;UpdateData(false);void CShiyanDlg:OnYoud

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论