Matlab读nc文件

1. Matlab 读nc文件 ( 读取单个点的数据 )

% 读nc文件
tic
lon = ncread('longtime_test.rtm.h0.1961-03.nc','lon');
lat = ncread('longtime_test.rtm.h0.1961-03.nc','lat');
lon_inx = find(lon== 107.25);
lat_inx = find(lat==25.25);

month_name = {'01' '02' '03' '04' '05' '06' '07' '08' '09' '10' '11' '12'};
for yr = 1:20
     for mn = 1:12     
         filename = ['longtime_test.rtm.h0.',num2str(yr+1977),'-',month_name{mn},'.nc']
 
         temp_liq = ncread(filename,'QCHANR');
         QCHANR(yr,mn) = temp_liq(lon_inx,lat_inx)
         
         temp_ice = ncread(filename,'QCHANR_ICE');
         QCHANR_ICE(yr,mn) = temp_ice(lon_inx,lat_inx)
      end
end
Q_mod = QCHANR + QCHANR_ICE
toc

2. Matlab 读nc文件 ( 读取整个网格数据 )

前情提要:读取的文件夹中有600个nc文件,分为50年,每月1个,共计600个。形状结构为192行×288列。
% 【摘要】读取 Clm45Sp 计算出来的nc结果,计算年平均和月平均值
%1)读数据
clc; clear; close all
fpath = 'D:\Models_Output\Clm50Sp\lnd\hist\';
filelist = dir([fpath,'*.nc'])

%2)读取 Clm45Sp 模拟值,变量为QRUNOFF,即 Runoff(mm/s)
% 读经纬度
fname = filelist(1).name;
lonsim = ncread([fpath,fname],'lon');
latsim = ncread([fpath,fname],'lat');

% 根据文件在文件夹中的顺序读取指定变量
for i = 121:600           % spin up 10年(10*12月),故从121开始,共40a
    fname = filelist(i).name;
    tmp = ncread([fpath,fname],'QRUNOFF');
    rofsim{i-120} = tmp;
end

%3)计算多年平均值
rofsim = reshape(rofsim,[12,40]); % 读取的是月平均,重塑cell形状
[aa,bb] = size(rofsim{1}); % 设置一个和cell中矩阵形状相同的矩阵;
sumrofsim_yr = zeros(aa,bb);
for j = 1:40
    sumtemp = zeros(aa,bb); % 注意这个可能会不断累加而导致结果错误,注意回收!
    for k = 1:12
        temp = rofsim{k,j};
        sumtemp = sumtemp + temp;
    end
        rofsim_yr{j} = sumtemp/12*3600*24*30*12; % 转化为年nuit:mm/year 
        sumrofsim_yr = sumrofsim_yr + rofsim_yr{j};
end
rofsim_yrly = sumrofsim_yr/40;

%4)调整经度的分布(有些是[-180,180],有些是[0,360],注意区别和转置)
%     此处 -180对应0180对应360
rofsim_yrly = rofsim_yrly';
rofsim_yrly = [rofsim_yrly(:,145:end),rofsim_yrly(:,1:144)];
h = pcolor(rofsim_yrly);
h.LineStyle = 'none';
colormap;
colorbar;
figure(2)
hist(rofsim_yrly);                       % 显示条型分布图

% 保存变量到指定文件夹
save('D:\数据\UNH-GRDC\World Runoff Data\runoff_grd\simres.mat','rofsim_yrly')

未完待续……

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨海深

感谢您的支持和鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值