2016-08-18 66 views
0

我有一個17G netcdf文件,我試圖用於分析。 netcdf文件中的每個變量都設置爲:variable(x,y,z,time)。我希望一次性閱讀和分析「時間」的變量,以便在Matlab中進行分析。換句話說,我想一次使用所有的x,y和z點。在過去我有過小的文件,以便在一個變量閱讀已成立了像Matlab讀取大型netcdf文件

fid=netcdf.open('filename/location','NC_NOWRITE'); 
var_id=netcdf.inqVarID(fid,'varname'); 
var=netcdf.getVar(fid,var_id); 

是否有可能使用一個時間步長時,在讀取變量的變量來讀? (語法錯誤),它會基本上看起來像

var=netcdf.getVar(fid,var_id,[:,:,:,time_index]); 

回答

0

是,在MATLAB的NetCDF命令支持這個,幾乎是這樣,你寫的:

data = netcdf.getVar(fid,var_id,var_index,var_length) 

更多信息,請參見matlab documentation。您也可以使用high-level matlab commands而不是netCDF庫函數。 例如,如果varname是100x4陣列,您可以通過使用獲得第7行:

% read 4 columns from 1 row of data starting at row 7, column 1 
v = ncread('filename/location','varname',[7 1],[1 4]); 

或四維陣列,如問題:

% read all data from dim. 1-3 at dim 4 = 27 
v = ncread('filename/location','varname',[1 1 1 27],[Inf Inf Inf 1]); 
+0

因爲我有四二維數組,我不需要像 data = netcdf.getVar(fid,var_id,[1 1 1 time_index] ... 這樣的命令我很難找出count和stride應該是什麼爲了得到所有的x,y,z數據。 – Lizzben

+0

我加了一些ex充足的代碼給答案。此外,matlab「高級」命令的文檔比你使用的「包」命令的文檔更好地解釋了這個問題。查看答案中的新鏈接。 – mhopeng