本帖最后由 Mr.未 于 2015-12-3 21:44 编辑
我在运行一个程序的时候有一点问题想请教一下大家。程序能够运行,也不报错,但是有一点不是很明白。 其中有如下一条语句:
temp = sum(dbz(lat>=latst & lat< latst+step & lon>=lonst & lon
以上语句是为了实现:对满足 lat>=latst & lat< latst+step & lon>=lonst & lon
注: 程序已经运行过,得到的结果和预期的差别不大,但是差别不大不等于正确!因此,特请教各位,望给予解答!谢谢!
如果你对这个问题感兴趣,并且需要完成的程序和数据,请告诉我,我将上传供您测试。
========= 分割线 =================================================
因为整个程序内容较多,因此只上传有问题的函数部分
----------------------------------------------------------------------------------------------------------------------------------------
% 变量声明:
% latmin : 指定纬度范围的纬度下限 lonmin 经度下限
% latmax : 指定纬度范围的纬度上限 lonmax 经度上限
% LAT : 存储指定范围纬度数据
% LON : 存储指定范围经度数据
% lat 为一个二维数组,存储纬度信息
% lon 为一个相同大小的二维数组,存储经度信息
% latmin = 30; latmax = 34;
% lonmin = 115; lonmax = 121;
% step = 0.1;
% dbz 是一个和 lat lon相同大小的二维数组
function [LON,LAT,var] = gridize(dbz,lon,lat,lonmin,lonmax,latmin,latmax,step)
% 将上述数据进行格点化
% 变量声明 :
% idx : 网格化后用于绘图的变量纬度方向格点数
% idy : 网格化后用于绘图的变量经度方向格点数
% latst : 网格化纬度起始点
% lonst : 网格化经度起始点
idx = size(latmin:step:latmax,2);
idy = size(lonmin:step:lonmax,2);
lonst = lonmin;
var = zeros(idx,idy);
for s = 1:idy
latst = latmin;
if lonst <= lonmax - step
for t =1:idx
if latst <= latmax
temp = sum(dbz(lat>=latst & lat< latst+step & lon>=lonst & lon
var(t,s) = temp;
latst = latst + step;
end
end
lonst = lonst + step;
end
end
var = var/5;
lat1 = latmin:step:latmax;
lon1 = lonmin:step:lonmax;
[LAT,LON] = ndgrid(lat1,lon1);
end