编辑netcdf变量

时间:2014-04-29 11:07:04

标签: matlab indexing netcdf

我在 netcdf (original.nc)文件(150x100x20000)中有一个3维变量my_var。我想将此变量中的所有元素从Celsius转换为Kelvin,然后在原始文件的副本(test.nc)中重写变量的新值。

%make a copy of the file I’m editing (so I can write the new values to it later
copyfile('original.nc','test.nc');
%gets the attributes of the file
fileattrib('test.nc','+w');
%get id and opens the file for editing
ncid=netcdf.open('test.nc','WRITE');
%gets variable id and specifies the original variable for editing
varid=netcdf.inqVarID(ncid,'my_var');
my_var=ncread('original.nc','my_var');
%converts the data from celcius to kelvin
new_myvar=convtemp(my_var,'C','K'); 
netcdf.putVar(ncid,varid,new_myvar);
netcdf.close(ncid);

我无法让new_myvar变量正确地写入原始变量。据我所知,转换为开尔文是正确的:所以new_myvar变量是正确的。 我认为这与索引有关..但我不确定。 我试过了:

[dimname0,dimlength0]=netcdf.inqDim(ncid,0);
[dimname1,dimlength1]=netcdf.inqDim(ncid,0);
[dimname2,dimlength2]=netcdf.inqDim(ncid,0);
netcdf.putVar(ncid,testid,new_myvar,[0,0,0],[dimlength0-1,dimlength1-1,dimlength2-1]);

认为这将指定需要填充多少维度(以及多少元素(计数))。但它并没有正确地重写变量。 谁能看到我做错了什么?

0 个答案:

没有答案