[英]Count non-zero entries in each column of a matrix
如果我有一个矩阵:
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
如何计算每列的非零条目数? 例如,此矩阵的所需输出将是:
2,2,3,2,3
我不知道如何做到这一点,因为size
, length
或numel
似乎不符合要求。 也许最好先删除零条目?
这很简单
> 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
这是我可以建议的另一个解决方案,它对于密集矩阵而言速度不是很快,但对于稀疏矩阵来说速度非常快(感谢@ user1877862!)。 这也可以模仿人们如何用C或Java等编译语言来实现这一点,也可能用于研究目的。 首先找到非零的行和列位置,然后仅对列位置执行直方图,以计算每列中看到非零的频率。 换一种说法:
[~,col] = find(A ~= 0);
counts = histc(col, 1:size(A,2));
find
输出矩阵满足函数参数内部某些布尔条件的行和列位置。 我们忽略第一个输出,因为我们不关心行位置。
我们得到的输出是:
counts =
2
2
3
2
3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.