フィルターのクリア

Picking out a specific time period from a NetCDF file?

2 ビュー (過去 30 日間)
Maya Lewis
Maya Lewis 2020 年 11 月 4 日
編集済み: L Chi 2021 年 6 月 22 日
Hi, I have a NetCDF file containing rainfall data for multiple river basins. I only need data for a particular time period (1980-2000) could some body help me pick these out? Thank you.
I have tried the below but I'm met with the error message: The logical indices in position 3 contain a true value outside of the array bounds.
rainfall = double(ncread(fname,'rainfall'));
TIME=double(ncread(fname,'time'));
TIME2 = double(TIME)/24 + datenum('1800-01-01 00:00:00');
TIME3=datestr(TIME2,0);
years=datevec(TIME3);
from_year = 1980; to_year = 2000;
baseline = years(:,1) >= from_year & years(:,1) <= to_year;
baseline_rainfall = rainfall(:, :, baseline);

採用された回答

KSSV
KSSV 2020 年 11 月 4 日
  1. Read the time data from netCDF file
  2. Convert them into datevec, and pick the years you want using ismember or logical indexing.
  3. Pick the data using those indices.
  1 件のコメント
Maya Lewis
Maya Lewis 2020 年 11 月 4 日
Thank you. Could you possibly show me an example?
thanks again

サインインしてコメントする。

その他の回答 (1 件)

L Chi
L Chi 2021 年 6 月 22 日
編集済み: L Chi 2021 年 6 月 22 日
You can try this toolbox: https://github.com/HappySpring/Easy_NetCDF
The following command should solve the problem.
[ out_dim, rainfall ] = FUN_nc_varget_enhanced_region_2( fname, 'rainfall', {'time'}, {[datenum(1980,1,1) datenum(2000,12,31,23,59,59)]}, 'time' );
where {'time'}, {[datenum(1980,1,1) datenum(2000,12,31,23,59,59)]} set the limit for time
and the 'time' follows the above codes indicates that the variable named 'time' should be treated as time.

カテゴリ

Help Center および File ExchangeNetCDF についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by