場景:發現nc檔案中某個變數的數值存在問題,修改在原始檔基礎上修改。
注意事項:
(1)修改nc檔案中的 「time」 變數為例
% read original nc file
dirpath =
'\wind'
;infilelist =
dir(
[dirpath,
'\*.nc'])
;% 讀取整個資料夾下的列表,存入結構體
for i =1:
468 filename =
[dirpath, '\',
infilelist
(i).name]
;% 路徑+檔名,讀取具體檔案
stryear =
infilelist
(i).
name
(end-9
:end-6
);% 讀取日期,如「2010」,型別為字串
strmonth =
infilelist
(i).
name
(end-4
:end-3
);% 讀取日期,如「08」,型別為字串
im =
int32
(str2num
(strmonth));
% 轉換為數字型別
ncid = netcdf.
open
(filename,
'write');
% 以「read-wirte」方式開啟nc
timeid = netcdf.
inqvarid
(ncid,
'time');
% 讀變數id
time_org = netcdf.
getvar
(ncid, timeid)
;% 獲取變數
monthdays =[31
2831
3031
3031
3130
313031]
; deltat =
1;
firstt =
0.5*deltat/
24;
lastt =
monthdays
(im)
-0.5
*deltat/24;
timen =
monthdays
(im)*24
/deltat;
time =
single
(linspace
(firstt, lastt, timen));
time = time';
netcdf.
putvar
(ncid, timeid, time)
;% 寫入新變數
netcdf.
close
(ncid)
;% 關閉nc檔案
end
【提醒】為提高效率,若迴圈內未牽涉到不同步長之間的計算,可以使用parfor來提公升效率。
(2)修改nc檔案中的 「et」 變數的「long_name」屬性的值
ncid = netcdf.
open
('ncfile.nc'
,'write');
% 以寫的方式開啟nc檔案
varid = netcdf.
inqvarid
(ncid,
'et'
)% 獲取變數的id
netcdf.
redef
(ncid)
% 開啟重定義模式
netcdf.
putatt
(ncid, varid,
'long_name'
,'latent heat flux'
)% 重新放屬性內容
netcdf.
close
(ncid)
% 最後,關閉nc檔案
相關參考:可結合matlab幫助詳細學習
MATLAB讀取 nc檔案
ncfilepath d 田晴1 esa cci 20141002 20160430active esacci soilmoisture l3s ssms active 20141002000000 fv04.4.nc 顯示結構 ncdisp ncfilepath 在命令列視窗中以文字形式顯示 ne...
製作nc檔案(Matlab)
首先看乙個nc檔案中包含哪些部分,例如乙個標準的fvcom輸入檔案wind.nc netcdf wind可以看出nc檔案包含兩個主要部分 dimensions 各個變數維度大小 variables 變數 在上面檔案中包含三個維度 nele,node,time。其中nele,node兩個是固定長度的,...
MATLAB開啟nc檔案並讀取nc檔案資料
ncdisp e nc 輸入該命令後命令列視窗會顯示該nc檔案的基本資訊 根據上一步中nc檔案的基本資訊提取nc檔案的相應資料。time ncread e nc time 首先,將所需要的資料提取出來 start 125,89,123 count 17,14,124 tmax ncread e nc...