2014-05-22 86 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

相关问题