计算矩阵每列中的非零条目

Ann*_*ann 2 matlab

如果我有一个矩阵:

A = [1 2 3 4 5; 1 1 6 1 2; 0 0 9 0 1]

A =

     1     2     3     4     5
     1     1     6     1     2
     0     0     9     0     1
Run Code Online (Sandbox Code Playgroud)

如何计算每列的非零条目数?例如,此矩阵的所需输出将是:

2,2,3,2,3

我不知道如何做到这一点size,length或者numel似乎不满足要求.也许最好先删除零条目?

kay*_*kay 5

这很简单

> A ~= 0
ans =

   1   1   1   1   1
   1   1   1   1   1
   0   0   1   0   1

> sum(A ~= 0, 1)
ans =

   2   2   3   2   3
Run Code Online (Sandbox Code Playgroud)

  • 这绝对不是必需的,但我总是希望包含第二个参数,说明要求总和的维度.默认值是每列的总和,如答案中所示.但考虑行数为1的情况,现在求和只是一个数字.如果矩阵的大小在调用之间发生变化(通常会发生),则可能会导致错误.因此,恕我直言,一个稍微好一点的方法是'sum(A~ = 0,1)`. (3认同)