'lffd1961_V10M_Iberia.nc', 'lffd1962_V10M_Iberia'... 'lffd2000_V10M_Iberia'라는 40 개의 netcdf 파일이 있습니다.여러 개의 netcdf 파일 읽기 - matlab
모두 동일한 프로그램에서 열어서 모두 동일한 변수를 얻고 해당 변수에 일부 방정식을 적용하고 해당 변수를 수정 한 40 개의 새 netcdf 파일을 만듭니다.
40 개의 파일을 열려면이 코드를 개발했고 제대로 작동해야합니다.
for yr=1961:2000
inFile=strcat('lffd',num2str(yr),'_V10M_Iberia.nc'); disp(inFile)
nc=netcdf.open(inFile,'NC_NOWRITE');
netcdf.close(nc)
end
이제 변수 4가 모두 필요합니다. 이 변수는 3D 매트릭스 (70x51x (8760 또는 8784))이 다음 라인처럼하지만 40 년 루프 뭔가입니다 :
ws_1961(1962, etc, etc) = netcdf.getVar(nc,4);
내 작업 공간 (40 개) 새 변수를 가질하기로했다.
ws_80 = ws.*(log(z/alpha)/log(exp(1))/(log(10/alpha)/log(exp(1))));
를 마지막으로 각 파일에 나의 새로운 변수로 (40 개) 새 netCDF의 파일을 만들 : 이후 나는 그 (40 개) 모든 변수에서이 방정식을 적용 할. 그런
뭔가 : 내가 당신의 모든 당신이 원하는 무엇이든 물어 편하지 바랍니다 그래서 이해하는 방식으로이 문제를 설명하기 위해
outFile=strcat('year',num2str(yr),'_80m.nc')
ncid = netcdf.create(outFile,'CLOBBER');
dimid0 = netcdf.defDim(ncid,'longitude',nlon); % getvar number 1
dimid1 = netcdf.defDim(ncid,'latitude',nlat); %getvar number 2
dimid2 = netcdf.defDim(ncid,'time',nt); %getvar number 3
varid0 = netcdf.defVar(ncid,'longitude','double', dimid0);
varid1 = netcdf.defVar(ncid,'latitude','double', dimid1);
varid2 = netcdf.defVar(ncid,'time','double', dimid2);
varid3 = netcdf.defVar(ncid,'ws_80','double', [dimid0 dimid1 dimid2]);
netcdf.putAtt(ncid,varid0,'units','degrees_east');
netcdf.putAtt(ncid,varid0,'long_name','longitude');
netcdf.putAtt(ncid,varid1,'units','degrees_north');
netcdf.putAtt(ncid,varid1,'degrees_north','latitude');
netcdf.endDef(ncid);
netcdf.putVar(ncid,varid0,longitude);
netcdf.putVar(ncid,varid1,latitude);
netcdf.putVar(ncid,varid2,time);
netcdf.putVar(ncid,varid3,ws80);
그것은 어렵다.
어디서 붙어서 도움이 필요합니까? 귀하의 방정식이 모든 파일의 모든 데이터를 하나의 변수로 요구하는지는 분명하지 않습니다. 그렇지 않다면 한 번에 한 파일 씩 작업하는 것이 좋습니다 (수식 읽기, 쓰기). ncread, ncinfo, ncwriteschema 및 ncwrite와 같은 상위 수준 기능을 사용하는 것이 더 쉬울 것입니다. –
부품으로 도와 주시겠습니까? 내 모든 .nc 파일이 열리는 첫 번째 루프가 정상적으로 작동합니다. 네 번째 위치 인 'netcdf.getVar (nc, 4);'에서 모든 변수를 얻으려면 루프가 필요합니다. 각 파일에. 내 다음 단계는 내 작업 영역에 40 개의 변수 (각 파일 중 하나)가 있습니다. – rochinha44
버전에 ncread 기능이 있습니까? 그리고 다시, 방정식을 적용하기 위해서는 40 개의 변수가 모두 필요합니까? 또는 한 번에 하나의 변수에 방정식을 적용 할 수 있습니까? –