将所有的 1 连续相加?

Adding all the 1's in a row?

我有一个非常大的矩阵(大约 4000000x2),并且在整个矩阵中散布着 1。我想做的是我只想把所有的 1 加起来排成一行。

例如,如果我有这样的矩阵:

A = [0 0 4 1 0 0 1
     1 0 5 0 7 0 1 
     5 6 0 8 1 0 6 
     0 9 5 1 0 0 0]

有没有办法将所有 1 的行相加?例如,这里是:

sum = [2
       2
       1
       1] 

我知道如果你想把整行加起来,你可以使用sum(A,2)。但是在matlab中有没有一种方法可以将所有特定数字相加?我是 matlab 的新手,非常感谢任何帮助,谢谢!!

生成一个到处都是 1 的数组A 有一个 1,其他地方都是 0:

>> A == 1
ans =
     0     0     0     1     0     0     1
     1     0     0     0     0     0     1
     0     0     0     0     1     0     0
     0     0     0     1     0     0     0

那么你可以直接使用sum:

sum(A == 1, 2)