MATLAB处理CN05.1数据集

使用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 变量的值。

你要输出哪个??

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^