求与边相交的最大距离-Matlab

求与边相交的最大距离-Matlab,matlab,distance,Matlab,Distance,我很确定这个标题不够清楚。我将试着解释:我有很多曲面需要与另一个曲面(固定曲面)进行比较。曲面由10x18xN矩阵定义,N为曲面数我想比较的是,如果任意N个曲面的任意点超过固定曲面,并计算其超过的距离我正在逐点比较,如下所示: for j = 1 : N for i = 1 : 10 for k = 1 : 18 if surface(i,k,j) > surface_fixed(i,k) dist =

我很确定这个标题不够清楚。我将试着解释:
我有很多曲面需要与另一个曲面(固定曲面)进行比较。曲面由10x18xN矩阵定义,N为曲面数

我想比较的是,如果任意N个曲面的任意点超过固定曲面,并计算其超过的距离
我正在逐点比较,如下所示:

  for j = 1 : N
     for i = 1 : 10
        for k = 1 : 18
            if surface(i,k,j) > surface_fixed(i,k)
                 dist = surface(i,k,j) - surface_fixed(i,k)
            end
        end
     end
   end

但我想知道,是否有可能不逐点计算这个“距离”(dist),因为它花费了我太多的时间

提前谢谢

“但我想知道是否有可能不逐点计算这个“距离”(dist),因为它花费了我太多的时间!”

然后你可能想把它矢量化。根据您的构造,它独立于
j
,因此类似于:

距离=表面(:,:,1)-表面固定

但是,我觉得需要更多的细节,因为您的索引可能不正确。您可以尝试以下方法:

dist=曲面-重塑(repmat(曲面固定,大小(曲面,1),大小(曲面))


但是如果没有更多关于您正在做什么的细节,我有相当高的可信度,这不是您想要的(并且可能会不必要地创建大型阵列)

好的,让我们在这里假设一些事情:

“Surface”是一个变量,它是深度贴图(如您前面所说的Z分量)。“Surface_fixed”是您将其与之进行比较的对象。“Surface”是10 X 18 X N矩阵,“Surface_fixed”是10 X 18

尝试以下方法,并让我知道这是否是您所需要的:

    Dist_measures = zeros(10,18,N);
    for i = 1:N
        Dist_measures(:,:,i) = Surface(:,:,i) - Surface_fixed;
    end
距离度量将保持高度的差异。你给它一个阈值,这样你就可以得到每个不同于固定曲面的索引的[x,y]位置

[x,y]=find(abs(Dist_measures(i))>Thres)


在这里,您可以迭代i并获得特定曲面任意位置的[x,y]坐标。

您如何定义
曲面(i,j,k)
超过
曲面固定(i,k)
?我觉得您的索引不正确。它不应该是曲面(i,k,j)吗由于您的边堆栈已定义为10X18XN?。我将尝试解释我的理解,以便在我出错时您可以纠正我。如果我的理解正确,如何将堆叠索引之间的像素差定义为距离?您有多个矩阵,其性质为10 X 18,并且您已将它们一个接一个地堆叠呃,生成一个10 X 18 X N矩阵。我假设每个矩阵都有一个大的数字来表示一条边,而非“边”区域的数字相对较小?非常感谢。现在我更正了它。我可以计算距离,因为它在这个10x18矩阵中有一些值。这些值是Z(高度)表面的。谢谢你的回复。我会尽快测试它,然后在这里发布更多细节,如果需要的话。谢谢你的回答,非常有用!谢谢你的回复!我按照你说的进行了测试,效果很好,谢谢!