2016-08-18 1 views
0

J'ai un fichier netcdf 17G que j'essaie d'utiliser pour l'analyse. Chaque variable dans le fichier netcdf est configurée comme: variable (x, y, z, time). Je voudrais lire et analyser les variables une «fois» à la fois pour l'analyse dans Matlab. En d'autres termes, je veux utiliser tous les points x, y et z en même temps. Dans le passé, j'ai eu des fichiers plus petits si la lecture dans une variable a été mis en place commeMatlab-lecture de grands fichiers netcdf

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

Est-il possible de lire dans les variables à l'aide d'un pas de temps lorsque la variable est lue? (Syntaxe incorrecte) Ce serait essentiellement ressembler à

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

Répondre

0

Oui, la commande netcdf Matlab prend en charge, à peu près la façon dont vous l'avez écrit:

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

Voir la matlab documentation pour plus d'informations. Vous pouvez également utiliser high-level matlab commands à la place des fonctions de la bibliothèque netCDF. Par exemple, si varname est un tableau 100x4, vous pourriez obtenir la ligne 7 en utilisant:

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

ou un réseau à quatre dimensions, comme dans la question:

% 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

Depuis que j'ai quatre tableau dimensionnel, n'aurais-je pas besoin de lancer la commande comme data = netcdf.getVar (fid, var_id, [1 1 1 time_index] ... Je n'arrive pas à trouver ce que le compte et la foulée devraient être afin d'obtenir toutes les données x, y, z à partir de ce moment-là – Lizzben

+0

J'ai ajouté quelques ex amplement de code à la réponse. De plus, la documentation pour les commandes "haut niveau" de matlab explique ce problème beaucoup mieux que la documentation pour les commandes "paquet" que vous utilisez. Voir le nouveau lien dans la réponse. – mhopeng