使用MATLAB处理CN05.1数据集,怎么输出制定研究区数据呢,是在for i/j 直接输入经纬度范围吗?求解惑初学者
代码如下:
clear all
setup_nctoolbox
source='E:\qxsj\gddata\CN05.1\1961-2018\CN05.1_Tm_1961_2018_daily_025x025.nc'
nc = ncgeodataset(source);
varname='tm'
nc.variables
lon = nc.data('lon');
lat = nc.data('lat');
jd = nj_time(nc,varname);
ncvar = nc.variable(varname);
for j=1:length(lat)
for i=1:length(lon)
v=ncvar.data(:,j,i);
outfile=sprintf('%6.2flon%6.2flat.csv',lon(i),lat(j))
fid=fopen(outfile,'wt')
data= [datevec(jd) v]
fprintf(fid,'%2.2d %2.2d %2.2d %2.2d %2.2d %2.2d %7.2f\n',data')
fclose(fid)
disp([outfile ' created.'])
end
end
如果您希望输出指定研究区的数据,可以通过在循环中添加一些条件判断来实现。例如,您可以将经纬度范围作为变量,并在循环内检查当前点的经纬度是否在该范围内。如果经纬度符合条件,则在循环内输出数据。代码如下:
clear all
setup_nctoolbox
source='E:\qxsj\gddata\CN05.1\1961-2018\CN05.1_Tm_1961_2018_daily_025x025.nc'
nc = ncgeodataset(source);
varname='tm'
nc.variables
lon = nc.data('lon');
lat = nc.data('lat');
jd = nj_time(nc,varname);
ncvar = nc.variable(varname);
% 研究区经纬度范围
lon_min = ...;
lon_max = ...;
lat_min = ...;
lat_max = ...;
for j=1:length(lat)
for i=1:length(lon)
% 如果经纬度符合条件,则输出数据
if lon(i) >= lon_min && lon(i) <= lon_max && lat(j) >= lat_min && lat(j) <= lat_max
v=ncvar.data(:,j,i);
outfile=sprintf('%6.2flon%6.2flat.csv',lon(i),lat(j))
fid=fopen(outfile,'wt')
data= [datevec(jd) v]
fprintf(fid,'%2.2d %2.2d %2.2d %2.2d %2.2d %2.2d %7.2f\n',data')
fclose(fid)
disp([outfile ' created.'])
end
end
end
您需要根据自己的研究区经纬度范围来设置 lon_min、lon_max、lat_min 和 lat_max 变量的值。
你要输出哪个??
不知道你这个问题是否已经解决, 如果还没有解决的话: