方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx

上传人:b****1 文档编号:5015223 上传时间:2023-05-04 格式:DOCX 页数:13 大小:104.09KB
下载 相关 举报
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第1页
第1页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第2页
第2页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第3页
第3页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第4页
第4页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第5页
第5页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第6页
第6页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第7页
第7页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第8页
第8页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第9页
第9页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第10页
第10页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第11页
第11页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第12页
第12页 / 共13页
方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx

《方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。

方格网上观测数据的窗口滑动平均处理C语言Word文档下载推荐.docx

三.总体设计

#include<

stdio.h>

malloc.h>

voiddata(double**a,intx,intm,intn)

{

doublesum=0;

inti,j,y,z,n9=0,n25=0;

for(i=0;

i<

m;

i++)

{

for(j=0;

j<

n;

j++)

switch(x)

case1:

for(y=i-1;

y<

=i+1;

y++)

if(y<

0||y>

=m)

continue;

for(z=j-1;

z<

=j+1;

z++)

if(z<

0||z>

=n)

sum+=a[y][z];

n9++;

}

break;

case2:

for(y=i-2;

=i+2;

=m)

for(z=j-2;

=j+2;

=n)

n25++;

if(x==1)

a[i][j]=sum/n9;

elsea[i][j]=sum/n25;

sum=0;

}

intmain()

introw,col,x,i,j;

FILE*in,*out;

double**p;

printf("

\n\n\n\n\n\n\n\n"

);

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

**\n"

*请选择使用圆滑方式*\n"

*1.9点圆滑方式.*\n"

*2.25点圆滑方式.*\n"

*************************************************************************\n"

请选择使用方式1或2:

\n"

scanf("

%d"

&

x);

请输入行列数(行列数必须相同):

\n"

%d%d"

row,&

col);

in=fopen("

D:

\\data.TXT"

"

r"

out=fopen("

\\newdata.TXT"

w"

p=(double**)malloc(sizeof(double)*row);

for(i=0;

row;

p[i]=(double*)malloc(sizeof(p)*col);

for(j=0;

col;

j++)

fscanf(in,"

%lf"

p[i][j]);

if((in=fopen("

data.TXT"

))==NULL)

{printf("

cannotopenfile"

return0;

}

data(p,x,row,col);

fprintf(out,"

p[i][j]);

free(p[i]);

free(p);

fclose(in);

fclose(out);

}

四.详细设计

1.主函数

程序:

FILE*in,*out/*定义二个文件型指针in和out*/;

double**p/*定义双浮点型的指向指针p的指针*/;

2.主菜单函数

主页面用如下函数进行处理:

[]\b\b"

start:

c);

3.其中用到了data(p,x,row,col)子函数,它是处理数据的核心函数,

函数内容如下:

/*用到系统提供的标准函数库中的输入输出函数*/

/*动态内存分布*/

voiddata(double**a,intx,intm,intn)/*自定义函数:

窗口滑动平均*/

doublesum=0/*sum计数器*/;

j++)/*两层循环控制使数组中每一个数据都成为窗口中心一次*/

switch(x)/*选择窗口滑动平均的方式*/

=m)/*行超出观测区域*/

=n)/*列超出观测区域*/

sum+=a[y][z]/*sum累计窗口里所有数据的和*/;

n9++/*记住相加数据个数,为后面提供方便*/;

case2/*算法同上*/:

elsea[i][j]=sum/n25/*求取窗口内所有观测点的平均值即为窗口中心点的新值并保存至数组a[i][j]中*/;

n9,n25是两个记录相加次数的变量,最后用于求平均值,continue和break是控制求平均的数据在方格网上。

由于要求事先将数据以文件的形式存放,故我先建了一个data.TXT的文件,数值如下:

由于题意叙述不是很清楚,故不知道是如何平移,思索一番后我决定让系统自动将所有的数据都处理到,故用了两个for循,将数据全部处理了一遍!

M;

N;

{……

……

另外,超出观测数据的部分用if来控制,使得程序不至于出错,具体程序如下:

if(y<

=M)

continue;

………………

4.程序末尾对文件的运用

)/*以只读的方式打开文本文档*/;

)/*以只写的方式打开文本文档*/;

p[i]=(double*)malloc(sizeof(p)*col)/*申请内存*/;

p[i][j])/*从指针in所指的文件中提取数据*/;

))==NULL)/*以输出打开方式,在此前的记录被覆盖*/

data(p,x,row,col)/*调用自定义窗口滑动平均处理函数*/;

p[i][j])/*将经过窗口滑动平均处理后的数组数据输出到指针out所指向的文件*/;

free(p)/*释放空间*/;

fclose(out)/*关闭文件*/;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2