首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Matlab创建文本文件

使用Matlab创建文本文件
EN

Stack Overflow用户
提问于 2015-11-16 23:10:24
回答 1查看 132关注 0票数 1

我试图在降水数据列表中做一些修改。数据以这种格式保存在*.txt文件中:

代码语言:javascript
复制
50810,200301010600,0.0
50810,200301010601,0.0
50810,200301010800,0.0
50810,200301010938,0.1
50810,200301010947,0.1
50810,200301010957,0.1

我所拥有的每个文件都包含了一年来每分钟的降水数据。第一个数字只是站号,这对于文件中的每一行都是相等的。在我的原始文件中,我每分钟都有一行数据。

我想要创建一个包含以下内容的新文件:

  • 只有降水量不是零的线,所以我想去掉最后一个数为零的所有线。我已经想明白了。
  • 如果有整整一个小时没有降水,我想删除所有的零线,并创建一个新的行,上面写着: 50810,200301010600,0.0。如果早上6点到7点之间没有降水凌晨1点01分。 清除所有数据= load('jan-31des_2003.txt');%打开带有数据fid=fopen的文件(‘50810_2003’,'w');%打开空文件以写入nrow,nrow=size(数据);数据fprintf的%大小(fid,'%5s %12s %5s \r\n','Snr','Dato - Tid','RR_01') %头为行= 1:nrow y= data (行,2);%m=数据(行,3);%月份d=数据(行,4);% date h=数据(行,5);% hour M=数据(行,6);%M p=数据(行,8);当p>0 fprintf时,降水量%(fid,'50810,%04d%02 d%02 d%02d,%.1f \r‘,y,m,d,h,M,p);如果p==0在这里需要帮助,我需要一些帮助结束结束封闭式(Fid);

if p==0条件下,我想要的格式的代码是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-17 01:02:58

假设您已经将数据作为名为infile的M*3数组导入,并且M可被60除,并且您的数据从一小时的第一分钟开始,并且您有一个将被写入一个新文件的数组外部文件:

代码语言:javascript
复制
outfile = []
while ~isempty(infile)
    block = infile(1:60,:);          % Take one hour's worth of data
    if sum (block(:,3)==0) == 60     % Check if the last column are all zero
        outfile = cat(1, outfile, [block(1,1:2), 0]);  % If so, put one line to new array
    else
        filter = block(:,3)~=0;      % Otherwise, pick out only rows that the last column is not zeros
        outfile = cat(1, outfile, block(filter,:));    % Put these rows into the new array
    end
    infile(1:60,:) = [];             % Remove already processed data from original array
end

然后将整个outfile数组写入文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33746352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档