声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1211|回复: 4

[求助]关于读数据和写数据的问题

[复制链接]
发表于 2006-3-27 12:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<BR>有个数据是这样的,500hpa的文件夹里有三年的资料,逐日的资料,我要读第二年和第三年的资料,前面的不读,还有个问题是我要读的后面两年的资料中还有些是缺少的,不能顺读或倒读,也不知道缺了多少天的资料.我该怎么做,谢谢!~还有就是读出的资料写的时候也要写成读入时候的格式,我又该怎么做呢!~
回复
分享到:

使用道具 举报

发表于 2006-3-27 17:37 | 显示全部楼层

回复:(F117_ren_0)[求助]关于读数据和写数据的问题...

<P>doc fscanf </P>
 楼主| 发表于 2006-3-28 12:06 | 显示全部楼层
<P>谢谢happy教授<BR>读取数据我用的是fscanf,程序是这样写的,帮我看看,谢谢<BR><BR>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<BR>%文件经纬度的起始范围 lon0&amp;lat0; 结束范围 lon1&amp;lat2;m0&amp;n0为要平滑点的经纬度<BR>lon0=50;<BR>lat0=30;<BR>lon1=100;<BR>lat1=60;<BR>m0=lon0+2.5:1:lon1-2.5;    %格点为2.5*2.5<BR>n0=lat0-2.5:1:lat1+2.5;    %格点为2.5*2.5<BR>%确定打开的文件名<BR>file1='K:\ecmwf\temper\850';   %文件位置<BR>date1=???;                  %读取的开始位置       <BR>date2=???;                  %读取的结束位置<BR>for i=date1:date2<BR>file2=int2str(i);<BR>file3='20.024';<BR>file4='20.048';<BR>file5='20.072';<BR>file6='20.096';<BR>file7='20.120';<BR>file8='0';<BR>if (i-1)&lt; ???<BR>file=[file1 file8 file2 file3 file4 file5 file6 file7]<BR>else<BR>file=[file1 file2 file3 file4 file5 file6 file7]<BR>end<BR>fid=fopen(file,'r');<BR>%这样写最麻烦的是我还需要自己去数我要读取的数据的开始位置和结束位置,<BR>%更要命的是我要读取的部分中还有不少缺少的,不能顺读<BR>% 读字符行 <BR>ch1=fgetl(fid);<BR>ch2=fgetl(fid);<BR>ch3=fgetl(fid);<BR>ch4=fgetl(fid);<BR>ch5=fgetl(fid);<BR>ch6=fgetl(fid);<BR>ch7=fgetl(fid);<BR>% 数据读取<BR>shuju1=(fscanf(fid,'%f',[151,61]))';<BR>shuju2=(fscanf(fid,'%f',[151,61]))';<BR>shuju3=(fscanf(fid,'%f',[151,61]))';<BR>shuju4=(fscanf(fid,'%f',[151,61]))';<BR>shuju5=(fscanf(fid,'%f',[151,61]))';<BR>%进行上下左右五点平滑<BR>shuju1(i)=(shuju(m0+1,n0)+shuju(m0-1,n0)+shuju(m0,n0)+shuju(m0,n0+1)+shuju(m0,n0-1))/5;<BR>shuju2(i)=(shuju(m0+1,n0)+shuju(m0-1,n0)+shuju(m0,n0)+shuju(m0,n0+1)+shuju(m0,n0-1))/5;<BR>shuju3(i)=(shuju(m0+1,n0)+shuju(m0-1,n0)+shuju(m0,n0)+shuju(m0,n0+1)+shuju(m0,n0-1))/5;<BR>shuju4(i)=(shuju(m0+1,n0)+shuju(m0-1,n0)+shuju(m0,n0)+shuju(m0,n0+1)+shuju(m0,n0-1))/5;<BR>shuju5(i)=(shuju(m0+1,n0)+shuju(m0-1,n0)+shuju(m0,n0)+shuju(m0,n0+1)+shuju(m0,n0-1))/5;<BR>end<BR>num=date2;<BR>shuju00(1:num,1)=(shuju1)';<BR>shuju00(1:num,2)=(shuju2)';<BR>shuju00(1:num,3)=(shuju3)';<BR>shuju00(1:num,4)=(shuju4)';<BR>shuju00(1:num,5)=(shuju5)';<BR>%写数据也让我头疼,再次感谢教授的指导!~<BR></P>
发表于 2006-3-28 15:26 | 显示全部楼层

回复:(F117_ren_0)谢谢happy教授读取数据我用的是f...

<DIV class=quote><B>以下是引用<I>F117_ren_0</I>在2006-3-28 12:06:30的发言:</B><BR>
<P>%这样写最麻烦的是我还需要自己去数我要读取的数据的开始位置和结束位置,<BR><FONT color=#ff0000>%更要命的是我要读取的部分中还有不少缺少的,不能顺读</FONT></P></DIV>
<P>两年的数据之间应该是有标识来区别的,通过标识来判断应该没问题,如果没有的话那就没办法了,计算机没有那么聪明的,必须要你告诉他按照什么规则开始,按照什么规则结束。<BR><BR>另外红色标及部分不知道你是什么意思</P>
 楼主| 发表于 2006-3-28 19:07 | 显示全部楼层
<P>谢谢happy教授!<BR></P>
<BR>你标示的红线部分的意思是:<BR>在一个文件佳850hpa中,有02年1月到7月的资料,还有就是04,05两年全年的资料,我现在读只读04,05年的资料,在读04,05年资料的时候发现这里面还有很多缺少的,我就不会处理里,我的想法是在直接从头读到尾:<BR>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<BR>%文件经纬度的起始范围 lon0&amp;lat0; 结束范围 lon1&amp;lat2;m0&amp;n0为要平滑点的经纬度<BR>lon0=50;<BR>lat0=30;<BR>lon1=100;<BR>lat1=60;<BR>m0=lon0+2.5:1:lon1-2.5;    %格点为2.5*2.5<BR>n0=lat0-2.5:1:lat1+2.5;    %格点为2.5*2.5<BR>%确定打开的文件名<BR>file1='K:\ecmwf\temper\850';   %文件位置<BR>date1=???;                  %读取的开始位置       <BR>date2=???;                  %读取的结束位置<BR>for i=date1:date2<BR>file2=int2str(i);<BR>file3='20.024';<BR>file4='20.048';<BR>file5='20.072';<BR>file6='20.096';<BR>file7='20.120';<BR>file8='0';<BR>if (i-1)&lt; ???<BR>file=[file1 file8 file2 file3 file4 file5 file6 file7]<BR>else<BR>file=[file1 file2 file3 file4 file5 file6 file7]<BR>end<BR>这段程序就是这个意思了,可是中途有很多缺少的,这个程序碰到没有的就会停下来,有没有什么好办法让它跳过读下面的数据?我想这样顺读或用倒读的办法都不容易实现,请教授指教
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-7-6 18:44 , Processed in 0.059148 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表