2014-05-22 30 views
1

我有兩個向量xxyy分別保存xy中的某些像素的索引A。我想要做的是用這些索引檢查像素的值,並計算有多少像素值爲0。例如,如果xx=[1 2 3]y=[2 5 8],我想檢查這些像素(x,y)(1,2), (2,5), (3,8)有多少個值爲0。我可以用for循環來做到這一點,但我認爲它可以在Matlab中更容易完成,所以如果有人可以請指教。在Matlab中計算具有一定值的特定索引的像素

回答

3

下面應該工作:

sum(A(sub2ind(size(A),xx,yy)) == 0) 

首先,將轉換爲行和列索引到單一索引到矩陣A.然後,檢查其中A是這些指數爲零(這將導致那些)。然後你簡單地總結一下。

3

sub2ind一個骯髒的方式是

sum(A([1 size(A,1)]*([ yy; xx ] - 1) + 1) == 0) 

您可以檢查here,看到骯髒的方法比sub2ind快〜X4倍。所以,如果你需要速度,使用髒方法;)

+2

@ user1460166感謝您「接受」我的答案。但是,我覺得你應該接受[user1809923的答案](http://stackoverflow.com/a/23801818/1714410):因爲它更「canonic」。我把我的答案作爲高級用戶的「額外」,新用戶應該以'sub2ind'開始...... – Shai

相關問題