下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 方格网上观测数据的窗口滑动平均处理

方格网上观测数据的窗口滑动平均处理.doc

方格网上观测数据的窗口滑动平均处理

财富不是一辈子的朋友
2019-01-12 0人阅读 举报 0 0 暂无简介

简介:本文档为《方格网上观测数据的窗口滑动平均处理doc》,可适用于IT/计算机领域

C语言课程设计报告方格网上观测数据的窗口滑动平均处理学 院:工程学院班 级:学 号:姓 名:赵明明指导老师:王改芳C语言程序设计报告前言C语言课程设计的目的以及意义c语言是一种编译型程序设计语言是需要我们同学动手动脑的一门科学“无他但手熟尔”足以说明只要我们勤学苦练掌握规律就可以编辑程序得心应手同样编程学习也是一个“理论→实践→再理论→再实践”的认识过程编的多也就孰能生巧。一开始要具有一定的计算机知识包括编程所需的数学基础知识具备入门的条件就可以开始编程实践。在实践中发现问题时再加强计算机理论知识的学习。当遇到问题时要会过头来学习一些计算机理论知识和数学基础理论很多问题会迎刃而解。因此我们要在学习编程的过程中不断深入学习数据结构、算法、编译原理、操作系统原理、软件工程等知识不断实践努力提高只要勤学苦练掌握规律就能找到许多窍门编起来得心应手。(一)课程设计报告()程序设计题目:第题 方格网上观测数据的窗口滑动平均处理 【要求】 已知m行n列方格网上的观测数据为了压制其中的高频干扰信号使个观测点之间的数据平滑过渡要求编写程序对该方格网上的数据进行窗口滑动平均处理。 所谓窗口滑动平均就是用点或点的窗口在观测区域上移动每次移动时窗口中心所对应的观测点重新取值为:窗口内所有观察点数据的平均值。 对于点圆滑有: ai,j=(ai,jai,jai,jai,jai,jai,jai,jai,jai,j) 对于点圆滑的情况可自己列出。 功能: 、使用文件输入输出已知数据要事先存在文件中处理结果要输出到文件中。 、观测点的行列和列数任意。 、使用点还是点圆滑可选。 、对于窗口跨越观测区域内外的边缘点只取其中落在观测区域内的数据参加平均值计算。 提示 :m行n列方格网数据事先存放在文件中在处理过程中可采用二维数组存储然后根据点圆滑或者点圆滑对观测数据进行滑动窗口平均处理计算结果写入结果文件。()题目分析:这个题的意思就是用一个x或x的方格网将这个或个数算出平均数把这个平均数再赋给中间那个格子例如:用x修均就是X这九个数先求平均数赋给中间那个的位置然后方格移向下一个位置:x是上一次计算的平均数根据题目要求由于方格网数据事先存放在文件中所以应提供文件的输入、输出等操作在程序中需要求数据的平均值应提供移动、求窗口中心、求窗口内平均值等操作题目要求可选点点两种窗口应提供两种程序并供选择。()整体设计与模块划分系统功能模块图()详细设计.主函数程序voidmain()***********************主函数***************************{inti,j,n*变量n保存选择菜单数字i和j控制选择数据范围*上图框里的数据信息由于我不会使用ntxt文件输入输出所以先使用直接输入数据aMN={{,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,}}float  printf("请输入点数(or):")scanf("d",n)if(n==)*选择功能*process(a)*输入模块*elseif(n==)process(a)for(i=i<Mi)for(j=j<Nj){printf("f ",aij)if(j==)printf("n")}}主函数流程图:各功能模块设计()求平均值函数说明宏定义  #defineM#defineN点和点的窗口设计分开【】对于点圆滑程序voidprocess(float(*p)){inti,j,l,m,count=floatsum=for(l=l<Ml)for(m=m<Nm){sum=sum(*(*(pl)m))以中心点坐标为标准算各个点情况中心点为。self   countif(l>=m>=)      {if(l>=){sum=sum*(*(pl)m)  点sum=sum*(*(pl)m) count}count}if(l>=m<N){sum=sum*(*(pl)m)   count}if(m>=){sum=sum*(*(pl)m)   count}if(m<N){sum=sum*(*(pl)m)    count}if(l<Mm>=){ sum=sum*(*(pl)m)   count}if(l<M){sum=sum*(*(pl)m)   count}if(l<Mm<N){sum=sum*(*(pl)m)   count}*(*(pl)m)=sumcount *计算平均数*count=sum=}}输入模块流程图【】对于点圆滑程序voidprocess(float(*p)){inti,j,l,m,count=floatsum=for(l=l<Ml)for(m=m<Nm){sum=sum(*(*(pl)m))    *以中心点坐标为标准算各个点情况中心点为*countif(l>=m>=)      {sum=*(*(pl)m) count}if(l>=m>=){sum=*(*(pl)m) count}if(l>=){sum=*(*(pl)m) count}if(l>=m<N){sum=*(*(pl)m) count}if(l>=m<N){sum=*(*(pl)m) count}if(l>=m>=){sum=*(*(pl)m) count}if(l>=m>=)   {if(l>=){sum=sum*(*(pl)m)     sum=sum*(*(pl)m)    count}count}if(l>=m<N)     {sum=sum*(*(pl)m)    count}if(l>=m<N){sum=*(*(pl)m)       count}if(m>=){sum=*(*(pl)m)       count}if(m>=){sum=sum*(*(pl)m)     count}if(m<N){sum=sum*(*(pl)m)      count}if(m<N){sum=*(*(pl)m)       count}if(l<Mm>=){sum=*(*(pl)m)       count}if(l<Mm>=){ sum=sum*(*(pl)m)    count}if(l<M){sum=sum*(*(pl)m)       count}if(l<Mm<N){sum=sum*(*(pl)m)     count}if(l<Mm<N){sum=*(*(pl)m)       count}if(l<Mm>=){sum=*(*(pl)m)       count}if(l<Mm>=){sum=*(*(pl)m)       count}if(l<M){sum=*(*(pl)m)       count}if(l<Mm<N){sum=*(*(pl)m)       count}if(l<Mm<N){sum=*(*(pl)m)       count}*(*(pl)m)=sumcountcount=sum=}}()运 行 与 测 试 报 告主 菜 单 函 数 效 果 如 下 图 所 示 :输 入 数 字  运 行 结 果 如 下 :经上机运行测试我将主函数中文件的输入输出重新编写(由于忽略了功能中的文件输入输出的要求)所以在课后我进行了修改如下:文件输入 fp=fopen(“ftxt”,”r”)*打开存放有数据的ntxt文件*if(!fp) exit()fscanf(fp,”d”,n)文件输出  fp=fopen(“ftxt”,”w”)再需建立一个n,txt文件夹里面装有数据。我对数据边缘的处理修改:以点圆滑为例(部分程序)补充处理边缘数据和行超出数据for(y=iy<=iy){if(y<||y>=m)*行超出观测区域*continuefor(z=jz<=jz){if(z<||z>=n)*列超出观测区域*continuesum=ayz*sum累计窗口里所有数据的和*}}列超出数据经修改此程序的所有功能现均符合要求。()源程序(见附录源程序)()学习心得及总结:上机实习过程中经过老师指导将主函数中数据的输入改为文件输入和输出更加符合题意适用范围更广。编程要多学习在遇到困难时回归课本找到解决的办法多实践就能取得好的成绩。在此次实习设计中我又对我的编程知识进一步熟练与提高这也是我最大的收获吧我将在以后的学习中继续努力为我之中的目标而奋斗!

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/20

方格网上观测数据的窗口滑动平均处理

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利