2016-08-16 70 views
0

我遇到了一個可能超級簡單的問題,但我花了一些時間。我會感謝任何幫助。Masking in Matlab

我有一個矩陣R(1024x1280雙),索引是0和1,另一個矩陣F(3000x2雙),這是3000點的位置(當然就R矩陣而言)。我怎麼能選擇R矩陣中位置爲1的F矩陣中的點。 我曾嘗試以下方法,但仍然沒有給我正確的答案:

siz= size(R); 
fet = false(siz(1),siz(2)); 
fet(F(:,1),F(:,2)) = true; 
[xf,yf]=find(fet==1 & R==1);` 

我知道我可以寫一個對於F中環和一個點(F(1,1)F(1,2))選擇一個,並檢查是否相同點R矩陣等於1,然後保存該點。但這是非高效的方式。在這方面有誰能幫我一個忙嗎? Best,

回答

2

您可以使用sub2indF轉換爲線性索引,然後索引到R以獲得布爾值。

bool = logical(R(sub2ind(size(R), F(:,1), F(:,2)))); 
touse = F(bool,:); 
+0

謝謝。以及如何從布爾值得到F的正確值。我是matlab的初學者。抱歉,愚蠢的問題。 – Sam

+0

@Sam更新了一個例子。 – Suever

+0

謝謝。它給了我這個錯誤:下標索引必須是真正的正整數或邏輯。然後我把它改成了這個form.tout = F(logical(bool),:);並正常工作。非常感謝。 – Sam