我很确定标题还不够清楚。我试着解释:
我有很多的曲面,我不得不比较另一个(固定的)。曲面由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但我想知道是否有可能计算这个“区域”(距离)而不是点对点,因为它花了我太多的时间!
提前感谢!
发布于 2013-10-02 01:04:14
好的,让我们假设以下几点:
“‘Surface”是一个变量,它是深度图(正如您前面所说的Z分量)。“Surface_fixed”就是你所比较的。'Surface_fixed‘是10×18×N矩阵,’Surface_fixed‘是10×18。
尝试以下方法,如果这是您所需要的,请告诉我:
Dist_measures = zeros(10,18,N);
for i = 1:N
Dist_measures(:,:,i) = Surface(:,:,i) - Surface_fixed;
endDist_measures将保持高度上的差异。给出一个阈值,这样你就可以得到与固定曲面不同的每个指数的x,y位置。
X,y= find(abs(Dist_measures(i)) > Thres)
在这里,您可以遍历i,得到特定曲面的任意位置的x,y坐标。
发布于 2013-10-02 00:33:25
“但我想知道是否有可能计算这个”距离“(距离)而不逐点计算,因为它花了我太多的时间!”
那么你很可能会想要把这个矢量化。根据您的构造,它独立于j,所以如下所示:
dist =面(:,:,1) - surface_fixed;
然而,我觉得需要更多的细节,因为你的索引可能是不正确的。你可以尝试这样的方法:
dist =表面重塑(surface_fixed,size(表面,1),size(表面))
但是没有更多关于你正在做的事情的细节,我有相当高的可信度,那不是你想要的(而且可能不必要地创建大数组)。
https://stackoverflow.com/questions/19128077
复制相似问题