数矩阵中的特定值数

4,026意见(过去30天)
科里·布拉德
科里·布拉德 2012年5月2日
我有一个很大的矩阵m,我试图计算一个特定值的数量(即,有多少个索引的值为4?)
我尝试过
val=总和(m==4);
但我最终成为Val是数字的矩阵/矢量数字。我假设这些数字来自每个列,应该在总计中添加一起,所以我尝试了另一个
num=sum(val=4);
但最后我得到了另一个向量/矩阵。
我该怎么做?

接受答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年5月2日
总和(m(:)==4)
2评论
Mathworks支金宝app持团队
R2018b或更高版本中提供的另一种语法是 总和(m==4,'all' ) . 但是对于这个简单的问题,使用 m( :)可能会更快。

登录以发表评论。

更多答案(6)

凯泰勒
凯泰勒 2012年5月2日
试试这个:
numberofnonzeros = nnz(m == 4);
使用NNZ比将逻辑转换为数字更有效,这是应用sum()所必需的
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年8月22日
在测试中我刚刚做到了,Sum()vs nnz()的时间不一致地告诉两种情况。NNZ()可能会稍微快速稍慢,但定时范围显示出如此多的重叠,无法达到真实的结论。nnz()可能更快,但我现在不能证明它。毕竟,可以将大量阵列的总和()派遣到Lapack。

登录以发表评论。


Sean de Wolski.
Sean de Wolski. 2012年5月2日
这可以很容易地做到 histc() 唯一的() 要获取每个值的编号,请执行以下操作:
UV =唯一(x);
n=历史(x,uv);
或者 唯一的() Accularray() :
[uv,〜,idx] =唯一(x);
n = Accularray(IDX(:),1)

ntsh kr
ntsh kr 2017年10月12日
编辑:ntsh kr 2017年10月12日
>>a
a=
5 5 5 5 5 5 5 6 9 96
5 3 9 5 2 7 5 6 2 1
8 3 6 9 8 7 5 1 6 9
>>ans1=总和(a==5)
ans1 =
2 1 1 2 1 1 3 0 0 0
>>b=总和(ans1)
B =
11

Dipanka Tanu Sarmah.
Dipanka Tanu Sarmah. 2017年11月11日
除此之外,如果要计算NaN的数量,(如果有的话)使用NNZ(ISNAN(M))

Vimal Kumar Chawda.
Vimal Kumar Chawda. 2020年5月18日
但如果我们想要OT为NAN和大矩阵中的任何数值做的话?
ans1 = sum(a == 5)所以在此,我的值是数值(始终不相同),另一个是常见的naN。但我需要仅计算x的特定值x。,x2,x3 ............... x7000的数值。
- 多次Y出现在X的特定值上?

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

登录以发表评论。

社区宝藏狩猎

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!