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')

未完待续……

要使用MATLAB切割NC文件,可以按照以下步骤进行操作: 1. 首先,确保已经安装了MATLAB软件,并且已经导入了相关的工具包,如NetCDF工具包。 2. 使用MATLAB的`ncread`函数读取NC文件的数据。例如,可以使用以下代码读取NC文件的经纬度和时间数据: ```matlab lat = ncread('file.nc', 'lat'); lon = ncread('file.nc', 'lon'); time = ncread('file.nc', 'time'); ``` 这将返回一个包含相应数据的数组。 3. 根据需要选择要切割的区域。可以使用MATLAB的索引和切片操作来限定所需的经纬度范围和时间范围。例如,可以使用以下代码选择纬度在30到40度之间、经度在-90到-80度之间、时间在第10到第20个时间步长之间的数据: ```matlab lat_subset = lat(30:40); lon_subset = lon(-90:-80); time_subset = time(10:20); ``` 4. 使用`ncread`函数读取要切割的变量数据。例如,可以使用以下代码读取名为"temperature"的变量数据: ```matlab temperature = ncread('file.nc', 'temperature', [30, -90, 10], [11, 11, 11]); ``` 这将返回一个包含切割后的温度数据的数组。请注意,[30, -90, 10]表示切割起点的索引,[11, 11, 11]表示切割的尺寸。 5. 可以根据需要对切割后的数据进行进一步处理和分析,如可视化或保存到新的NC文件中。 请注意,以上步骤仅为示例,具体的切割方法可能会因数据的维度和结构而有所不同。根据实际情况,您可能需要根据NC文件的具体属性和要求进行适当的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [NC文件不规则裁剪(利用shp文件裁剪)(二)](https://blog.csdn.net/qq_44907989/article/details/129725514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大雨海深

感谢您的支持和鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值