计算矩阵中特定值的个数

4,054次(过去30天)
科里布拉德
科里布拉德 2012年5月2日
我有一个大矩阵,m,并试图计数一个特定值的数量(即,值4有多少索引?)
我试着使用
Val = sum(m == 4);
但我最终得到val是一个矩阵/数字向量。我假设这些数字来自每一列,应该加在一起得到总数,所以我尝试了另一个
Num = sum(val == 4);
但最后得到的是另一个向量/矩阵。
我该怎么做呢?

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年5月2日
总和(m (:) = = 4)
2的评论
MathWorks支万博1manbetx持团队
R2018b或更高版本中可用的另一种语法是 总和(m = = 4,“所有” 但是对于这个简单的问题,用 米( :)可能会更快。

登录评论。

更多的答案(6)

Kye泰勒
Kye泰勒 2012年5月2日
试试这个:
numberOfNonZeros = nnz (m = = 4);
使用nnz比将逻辑转换为数字更有效,这是应用sum()所必需的。
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年8月22日
在我刚刚做的测试中,sum() vs nnz()的计时不能始终区分这两种情况。Nnz()可能会稍微快一点,但计时范围显示出太多重叠,无法得出真正的结论。nnz()可以更快,这是有道理的,但我现在不能证明它。在足够大的数组上,sum()最终可以被分派给LAPACK。

登录评论。


肖恩·德Wolski
肖恩·德Wolski 2012年5月2日
这很容易做到 histc () 独特的() 获取每个值的数量:
紫外线=独特的(x);
n = histc (x,紫外线);
或与 独特的() accumarray ()
[紫外线,~,idx] =独特的(x);
n = accumarray (idx (:), 1)

ntsh基米-雷克南
ntsh基米-雷克南 2017年10月12日
编辑:ntsh基米-雷克南 2017年10月12日
> >一个
一个=
5 5 5 5 5 6 9 96
5 3 9 5 2 7 5 6 2
8 3 6 9 8 7 5 1 6 9
> > ans1 =总和(= = 5)
ans1 =
2 1 1 2 1 1 3 0 0
> > b =总和(ans1)
b =
11

dipanka tanu sarmah
dipanka tanu sarmah 2017年11月11日
如果你想计算NaN的数量,可以使用nnz(isnan(m))

维姆·库马尔chawda
维姆·库马尔chawda 2020年5月18日
但如果我们想对NaN和大矩阵中的任何数值做ot,那么?
ans1=sum(a==5),所以在这里我的值是数值(这不是所有时间都一样),其他的是NaN,这是常见的。但我只需要计算特定x,x2,x3的数值...............X7000在y轴上。
-在x的特定值处y出现了多少次?

帕特里克·奔驰
帕特里克·奔驰 2021年4月2日
如何计算数组第二列中的值取决于列中的值?
我有一个像这样的数组:
400年0
396年0
392年1
400年0
396年1
400年1
我想知道在“400”或其他值旁边有“1”或“0”的频率。
但这只给出了1和0的总数以及392出现在第一列的频率。
4评论

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!