F117_ren_0 发表于 2006-3-27 12:12

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

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

happy 发表于 2006-3-27 17:37

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

<P>doc fscanf </P>

F117_ren_0 发表于 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=<BR>else<BR>file=<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',))';<BR>shuju2=(fscanf(fid,'%f',))';<BR>shuju3=(fscanf(fid,'%f',))';<BR>shuju4=(fscanf(fid,'%f',))';<BR>shuju5=(fscanf(fid,'%f',))';<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>

happy 发表于 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>

F117_ren_0 发表于 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=<BR>else<BR>file=<BR>end<BR>这段程序就是这个意思了,可是中途有很多缺少的,这个程序碰到没有的就会停下来,有没有什么好办法让它跳过读下面的数据?我想这样顺读或用倒读的办法都不容易实现,请教授指教
页: [1]
查看完整版本: [求助]关于读数据和写数据的问题