Matlab 批量修改nc檔案中某乙個變數的數值

2021-10-12 04:19:04 字數 2310 閱讀 3279

場景:發現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...