繁体   English   中英

Matlab-在3D矩阵中查找2D矩阵值

[英]Matlab - Find 2d matrix values in 3d matrix

我有以下问题。 我有两个矩阵,一个是XD尺寸的2d矩阵,具有从DEM文件中获取的一组地形高度,另一个是X,Y,Z尺寸的3d矩阵,每个Z高度值从0到5000米(X,Y )点。

我想将每个(X,Y)点的DEM高度与Z高度值的列进行比较,然后取最接近的一个。 例如:

dem(1,1) = 1850 %actual height of the terrain at point (1,1)
heights(1,1,:) = 0, 1000, 2000, 3000, 4000, 5000 %column of heights at point (1,1)

如果使用函数“查找”,则会出现以下错误:

find(heights > dem, 1)
Error using  > 
Number of array dimensions must match for binary array op.

有什么解决方案不需要两个for循环吗?

预先非常感谢您的帮助!

您可以使用bsxfun将其减少到一个维度上的循环:

heights = rand(10, 10, 10);
dem = rand(5, 1);
bsxfun(@gt, heights(1, :, :), dem)

    [returns a 5x10x10 matrix]

您只需要将数据定义为:

dem(1,1) = 1850;
heights(1,1,:) = [0; 1000; 2000; 3000; 4000; 5000];

现在, find(heights > dem, 1)

ans =

     3

这是预期的结果,索引为2000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM