J'ai une fonction qui génère yout_new (5000,1) à chaque itération et je veux stocker ces données dans un fichier netcdf et ajouter les nouvelles données générées à chaque itération dans cette itération. fichier existant. À la deuxième itération, la taille de la variable stockée doit être yout_new (5000,2). Voici mon essai qui ne fonctionne pas. Est-ce qu'il y a une bonne façon de le faire?Ajouter des données au format Netcdf de tableau 2D Matlab
neq=5000;
filename='thrust.nc';
if ~exist(filename, 'file')
%% create file
ncid=netcdf.create(filename,'NC_WRITE');
%%define dimension
tdimID = netcdf.defDim(ncid,'t',...
netcdf.getConstant('NC_UNLIMITED'));
ydimID = netcdf.defDim(ncid,'y',neq);
%%define varibale
varid = netcdf.defVar(ncid,'yout','NC_DOUBLE',[ydimID tdimID]);
netcdf.endDef(ncid);
%%put variables from workspace (i is the iteration)
netcdf.putVar(ncid,varid,[ 0 0 ],[ neq 0],yout_new);
%%close the file
netcdf.close(ncid);
else
%% open the existing file
ncid=netcdf.open(filename,'NC_WRITE');
%Inquire variables
[varname,xtype,dimids,natts] = netcdf.inqVar(ncid,0);
varid = netcdf.inqVarID(ncid,varname);
%Enquire current dimension length
[dimname, dimlen] = netcdf.inqDim(ncid,0);
% Append new data to existing variable.
netcdf.putVar(ncid,varid,dimlen,numel(yout_new),yout_new);
netcdf.close(ncid);
Merci mate! ... fonctionne bien ... Y at-il une option supplémentaire dans nccreate qui vous permet d'écraser le fichier existant ... actuellement j'utilise si exist() tester et supprimer le fichier .. –
Non _nccreate_ doesn pas cette option. Allez-y avec _exist_ .. –