爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 17174|回复: 21

[程序设计] matlab 如何批量处理数据,并用不同名称保存成mat文件?

[复制链接]

新浪微博达人勋

发表于 2016-3-14 22:10:58 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
微信截图_20160314220947.png 气象数据文件如图。一共是1951-2014年的温度数据。内含N多站点的日资料
现在已经处理好一个文件月平均温度。如何批量处理后,每个文件保存成mat格式,并命名为(195101)这种形式?
谢谢各位大神指点~。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-15 16:05:21 | 显示全部楼层
柠檬树。 发表于 2016-3-15 14:32
那您知道有什么数据站点格式一样嘛?
我对数据是这样处理的。
%average TEM

file=dir('I:\datasets\PRE\*.txt');
for n=1:length(file)
temp=dlmread(['I:\datasets\PRE\',file(n).name]);
加入你的程序
fid=fopen(['I:\',file(n).name],'wt');
[m,n]=size(变量);
for i=1:1:m
    for j=1:1:n
        if j==n
fprintf(fid,'%g\n',变量(i,j));
        else
fprintf(fid,'%g\t',变量(i,j));
        end
    end
end
fclose(fid);
clear all
end
这样可以存成txt的,只是按原来的文件名存。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2016-3-15 14:32:37 | 显示全部楼层
↘禹禹獨行… 发表于 2016-3-15 14:12
这个是V3.0日资料数据吧。话说这个资料每个文件的站点不一样多,而且站点还不是顺序排列,不好做批处理。不 ...

那您知道有什么数据站点格式一样嘛?
我对数据是这样处理的。
%average TEM
f=load('C:\Users\Lenovo\Desktop\wendufuben\temp\1953\SURF_CLI_CHN_MUL_DAY-TEM-12001-195312.TXT');
%剔除32766误差值
A=f(:,8)~=32766;
B=f(A,1:10);%新矩阵
station=B(:,1); %区站号
lat=B(:,2); %纬度
lon=B(:,3); %经度
elevation=B(:,4); %海拔
year=B(:,5); %年
month=B(:,6); %月
day=B(:,7); %日   
temp=B(:,8); %平均温度
D=[station,lat,lon,elevation,year,month];
%第一列不一样的挑出来
T=unique(B(:,1));
G=size(T,1);
C=unique(D,'rows'); % 台站号 纬度 经度 海拔 年 月
%求平均
I(:,1)=arrayfun(@(x)mean(B(find(B(:,1)==T(x)),8)),1:G);
I=I(:,1).*0.1;
Z=[C,I]
format long g
Z
save ('data\1953-1.mat','Z','-v7.3');
%clear all
%clc
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-3-15 08:35:01 | 显示全部楼层
能否在读取数据的时候,把文件名称对应的倒数第5至倒数第10个字符截取出来,然后用来命名输出的文件。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-15 10:26:02 | 显示全部楼层
我目前的做法是将这些文件写成一个NetCDF格式的文件 这样就可以一次性读入并且处理了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-15 12:58:31 | 显示全部楼层
dreamdong 发表于 2016-3-15 10:26
我目前的做法是将这些文件写成一个NetCDF格式的文件 这样就可以一次性读入并且处理了

您具体如何处理?期待有个例子
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-15 14:12:15 | 显示全部楼层
这个是V3.0日资料数据吧。话说这个资料每个文件的站点不一样多,而且站点还不是顺序排列,不好做批处理。不知道你想做成什么样子的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-15 14:18:31 | 显示全部楼层
kongfeng0824 发表于 2016-3-15 12:58
您具体如何处理?期待有个例子

同求例子~最近也遇到了同样类似的问题,困扰了好久还未解决
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-15 14:24:41 | 显示全部楼层
kongfeng0824 发表于 2016-3-15 12:58
您具体如何处理?期待有个例子

您是说生成NetCDF格式文件的例子吗?我是用R做的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-16 14:47:09 | 显示全部楼层
你的程序应该差不多了  只不过加个循环每个文件单独去运行  最后保存的时候再根据当前文件名保存就可以了

datadir='./';
savedir='./';
f_t=dir([datadir '*TEM*.txt']);
for ifile=1:length(f_t)
    data_tem=dlmread([datadir f_t(ifile).name]);
    %这里你增加去异常值的
   
    [C,ia,ic]=unique(data_tem(:,1));
    stations=data_tem(ia,1);
    for ista=1:length(stations)
        monthlytem=[stations(ista,1) nanmean(data_tem(find(data_tem(:,1)==stations),第几列的温度?))];
    end
   
    save([savedir f_t(ifile).name(end-9:end-4) '.mat'],'monthlytem');
   
end
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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