2013-10-02 46 views
0

我很確定標題不夠清晰。我會盡力解釋:
我有很多表面,我必須與另一個(固定的)進行比較。曲面由10x18xN矩陣定義,N是曲面的數量。

我想比較的是如果任何N面的任何點超過固定表面並計算它超出的距離。
我比較逐點,像這樣:找到穿過邊緣的最大距離 - Matlab

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」(距離)而不被逐點,因爲它需要我太多時間了!

在此先感謝!

+1

如何定義'surface(i,j,k)'超過'surface_fixed(i,k)'? – URL87

+1

我覺得你的索引是不正確的。它不應該是曲面(i,k,j),因爲你的堆棧邊界被定義爲10X18XN ?.我會盡力解釋我的理解,以便在錯誤的情況下糾正我的錯誤。 如果我的理解是正確的,堆棧索引之間的像素差異如何定義爲距離? 您有多個自然數爲10 X 18的矩陣,並且您將它們依次堆疊在一起以生成10 X 18 X N矩陣。我假設每個矩陣都有很大數量來表示邊緣,而非「邊緣」區域是相對較小的數字? –

+0

非常感謝。現在我糾正了它。 我可以計算距離,因爲它在這個10x18矩陣中有一些值。這些值是表面的Z(高度)。 – Luiz

回答

1

好吧,讓我們假設幾件事情在這裏:

「面」是一個變量,它的深度圖(如前所述,Z分量)'Surface_fixed'是你正在比較的。 「面」是10×18矩陣XN和「Surface_fixed」是10×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] =找到(ABS(Dist_measures(I))> THRES)

在這裏,你可以通過I迭代並得到[X,Y]的特定表面的任何位置的座標。

+0

感謝您的回覆!我測試像你說的,它運行良好,謝謝! – Luiz

1

「但是我想知道是否有可能計算這個」dist「(距離)而不是逐點,因爲它花費了我太多的時間!

然後你可能想引導這個。它獨立於j根據您的構造如此類似:

dist = surface(:,:,1) - surface_fixed;

但是,我覺得需要更多的細節,因爲您的索引可能不正確。你可以嘗試這樣的:

DIST =表面 - 重塑(repmat(surface_fixed,尺寸(面,1),大小(面))

,但沒有更多的細節上,你在做什麼我有相當高的credent,這不是你以後在做什麼(和可能產生unneccessaryily大型陣列)

+0

感謝您的回覆。我要儘快測試它,然後在這裏發佈更多詳細信息,如果需要的話 – Luiz

+1

非常感謝您的回答,這非常有幫助! – Luiz