爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10106|回复: 4

[程序设计] matlab合并数据

[复制链接]
回帖奖励 6 金钱 回复本帖可获得 2 金钱奖励! 每人限 1 次

新浪微博达人勋

发表于 2021-4-10 17:02:54 | 显示全部楼层 |阅读模式

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

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

x
这是matlab读取数据的部分代码:filelist=dir('*.nc4')
len=length(filelist)
for s=1,len
filename=[filelist(s).name]
temdata=ncread(filename,'SoilTMP0_10cm_inst')
lon=ncread(filename,'lon')
lat=ncread(filename,'lat')

(filename为二维)
....
然后我想新增一维可将每十二个文件的数据存到一个文件里面。但是不知道该怎么做了,请求指点
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-4-10 21:48:59 | 显示全部楼层

回帖奖励 +2 金钱

本帖最后由 东水兽 于 2021-4-10 21:52 编辑

复制代码
filelist = dir('*.nc');
len = length(filelist); % 看你代码是有len个变量,这个len能够被12整除

%% 定义需要写入的变量
year = len/12; % 这里假设year不超过100
for i = 1:year
    % 为了新变量名称好看一些,十以下的序号我习惯加一个0
    % 最后的形式应该是new_varible_01 .... new_varible_10 ...
    if i < 10
        val = strcat('new_varible_0',num2str(i));
    else
        val = strcat('new_varible_',num2str(i));
    end
    % 重新定义year个变量,前两个纬度和原变量是一样的,我这里是假设第一个纬度为lon,第二个纬度为lat
    % new_varible_01 = zeros(length(lon),length(lat),12);
    eval([val,' = zeros(length(lon),length(lat),12);'])
end

%% 将原数据写入新变量
for i = 1:year
    if i < 10
        val = strcat('new_varible_0',num2str(i));
    else
        val = strcat('new_varible_',num2str(i));
    end
    for j = (i-1)*12+1:(i-1)*12+12
        filename = [filelist(j).name];
        temdata = ncread(filename,'SoilTMP0_10cm_inst');
        % new_varible_01(:,:,j) = temdata(:,:);
        eval([val,'(:,:,j) = temdata(:,:);'])
    end
end

不知道这样可以么


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-4-11 08:09:50 | 显示全部楼层

回帖奖励 +2 金钱

filelist=dir('*.nc4')
len=length(filelist)
newdata=[];
for s=1:len
filename=[filelist(s).name]
temdata=ncread(filename,'SoilTMP0_10cm_inst')
newdata = cat(3,newdata,temdata);
lon=ncread(filename,'lon')
lat=ncread(filename,'lat')
end
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-4-12 22:03:43 | 显示全部楼层
东水兽 发表于 2021-4-10 21:48
filelist = dir('*.nc');
len = length(filelist); % 看你代码是有len个变量,这个len能够被12整除

哇!!感谢感谢!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-4-12 22:07:08 | 显示全部楼层
zane 发表于 2021-4-11 08:09
filelist=dir('*.nc4')
len=length(filelist)
newdata=[];

感谢感谢!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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