在MATLAB中找到离点最近的网格框

时间:2019-02-22 21:32:35

标签: matlab 3d grid latitude-longitude nearest-neighbor

我正在使用MATLAB分析模型数据。

现在,我正在处理纬度,经度和海拔数据。经度和纬度均为336 x 264的矩阵,其输出单位为度。我的海拔数据是3维的。前两个维度是纬度和经度,因此是336x264。第三维是海拔层,因此基于该点的高度为1-> 27。输出以米为单位,但是我已经将其转换为厘米,并将其分配给变量“ gridh”。


对于我的代码,我从原点开始,每次移动一厘米,直到像这样到达大气层顶部为止:

gridh(:,:,:) = h(:,:,:,12); % Convert to 3d matrix at noon
origin = [lat(168, 132) lon(168, 132) 0];
theta  = 90; % Zenith
theta_rad = degtorad(theta); % Convert to radians
psi = 0 ; % Azimuth
psi_rad = degtorad(psi); % Convert to radians

s = latlonstepcm ;% Degrees % will also be used for altitude, but will convert this back to altitude in cm later.

dx = s*sin(theta_rad)*cos(psi_rad) ;% Change in lon
dy = s*sin(theta_rad)*cos(psi_rad); % Change in lat
dz = s*cos(theta_rad) ;% Change in altitude
dz_cm = dz*(1/(9e-08)) % converting dz to cm cm

dxf = origin(1) + dx;
dyf = origin(2) + dy;
dzf = origin(3) + dz;

position_final = [dxf dyf dz_cm]

原点只是格式[纬度高度]的某个点,例如:[26.19度,26.19度0厘米]

我试图以指定的方向移动,直到一直穿过网格并以每厘米的间隔移动(或者更多,我不太在乎间隔是否不同,我只是想让概念正确)要检查网格框,以便我可以将网格框乘以指定网格框内的平均二氧化氮含量。

所以基本上,我想找到一个

    position_final = [dxf dyf dz_cm]

进入其中,然后多多少少该网格框中的2号

 no2_moleccm3(?,?,?,12)

经过1厘米的距离。

希望这很有道理!

我很困惑,我已经尝试了一段时间了。


如果有人可以单独帮助我,我知道使用if语句可以很容易地在z方向上识别图层,也许这可以减少这里的难度?

谢谢

泰勒

0 个答案:

没有答案