我很确定标题不够清晰。我将尝试解释:我有很多表面需要与另一个表面进行比较(固定表面)。表面由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" (距离)没有逐点,因为它花了我太多时间!
提前致谢!
答案 0 :(得分:1)
“但我想知道是否可以逐点计算这个”dist“(距离),因为它花了我太多时间!”
然后你可能想要对此进行矢量化。根据您的构造,它独立于j
,如下所示:
dist = surface(:,:,1) - surface_fixed;
但是,由于您的索引可能不正确,我觉得需要更多详细信息。你可以尝试类似的东西:
dist = surface - reshape(repmat(surface_fixed,size(surface,1),size(surface))
但是没有关于你正在做什么的更多细节我有相当高的凭证,这不是你想要的(并且可能不必要地创建大型数组)
答案 1 :(得分: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
Dist_measures将保持高度差异。你给它一个阈值,这样你就可以获得与你的固定表面不同的每个索引的[x,y]位置。
[x,y] = find(abs(Dist_measures(i))> Thres)
在这里你可以遍历i并获得特定表面任何位置的[x,y]坐标。