使用Matlab中具有特定值的某些索引计算像素

时间:2014-05-22 08:31:17

标签: matlab

我有两个向量xxyy分别在矩阵x中保存某些像素的yA索引。我想要做的是检查那些索引的像素值,并计算这些像素中有多少具有值0。例如,如果xx=[1 2 3]y=[2 5 8],我想检查这些像素(x,y)(1,2), (2,5), (3,8)中有多少具有值0。我可以使用for循环执行此操作,但我认为在Matlab中可以更轻松地完成此操作,因此如果有人可以请提供建议。

2 个答案:

答案 0 :(得分:3)

以下内容应该有效:

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

首先,将行和列索引转换为矩阵A中的单个索引。然后,检查这些索引的A为零(这将导致为1)。然后你简单总结一下。

答案 1 :(得分:3)

sub2ind更脏的方式

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

您可以检查here并查看脏方法比sub2ind快〜x4倍。因此,如果您需要速度,请使用脏方法;)