我是这个论坛的新手,所以请多多包涵。我一直在研究这个 Matlab 问题一段时间:
我有一个 tif 格式的数字高程模型 (DEM) new_sub(x,y)。所以它是一个包含高度 (z) 的 x×y 矩阵。我希望以不同的分辨率重新采样这个 DEM 的部分并将其恢复到另一个矩阵中。到目前为止,我一直在使用 for 循环来更改 DEM 不同区域的分辨率,然后将结果写入 xyz 文件:
xyz 1 1 123 1 2 233 1 3 231 2 1 235 2 2 531 2 3 452
等等。这是代码:
xmax = size(new_sub,2);
ymax = size(new_sub,1);
for k=1:200 % y
for l=1:xmax % x
fprintf(fid, '%d %d %d \n',l,xmax+1-k,new_sub(k,l));
end
end
% 1:4
for k=200/2+1:size(new_sub,1)/2
for l=1:size(new_sub,2)/2
fprintf(fid, '%d %d %d \n',l*2,ymax+2-k*2,new_sub(k*2,l*2));
end
end
这确实有效,但似乎相当复杂。此外,它不允许我将重采样区域存储在 Matlab 中的单个矩阵中。
有没有更有效的方法来重新采样具有不同分辨率的矩阵的某些区域,将它们写入包含所有重新采样区域的新矩阵,然后将其写入文件?我正在研究repmap,但想不出一个聪明的方法来使用它!
非常感谢您的帮助!
西奥