如何在MATLAB中计算向量中每个元素的出现?
2.108次浏览(过去30天)
显示旧的注释
我想能够返回出现的每个元素在一个向量的计数。
例如,如果我有一个向量:
X =[10 25 4 10 9 4 4]
我希望结果是
Y =[2 1 3 2 1 3 3]。
接受的答案
MathWorks支金宝app援小组
2020年2月27日
编辑:MathWorks支金宝app援小组
2020年2月27日
从MATLAB R2019a开始,您可以使用“groupcounts”函数来计算一个元素作为摘要出现在向量中的次数。换句话说,下面输出“GC”的元素是“GR”中对应元素值的计数(来自原始输入向量“x”):
X = [10 25 4 10 9 4 4]';
[GC,GR] = groupcounts(x)
GC =
3.
1
2
1
GR =
4
9
10
25
有关“groupcounts”的更多信息,请参阅下面的文档链接:
---
从MATLAB R2018b开始,如果你想计算一个元素在向量中出现的次数,并输出输入向量的每个对应元素,你可以使用“grouptransform”函数。例如:
X = [10 25 4 10 9 4 4]';
Y = grouptransform(x,x,@ nummel)
y =
2
1
3.
2
1
3.
3.
有关“grouptransform”的更多信息,请参阅下面的文档链接:
---
在MATLAB R2018b之前,虽然没有单一的函数来计数每个元素的出现次数,但有几种方法来计数向量中的元素:
1.逻辑索引:
下面的代码片段将给出所需的输出:
Y = 0(大小(x));
为I = 1:长度
Y (i) = sum(x==x(i));
结束
对于MATLAB R2016b及以后版本,您可以使用隐式展开来进一步简化代码:
Y = sum(x==x')
2.装箱:
你可以使用"hist"和"unique"函数,如下所示:
X = [10 25 4 10 9 4 4]
[a, b] =嘘(x,独特的(x))
3.第三方工具:
关于另一种解决方法,请参阅下面的文件“CountMember”。m',它是由一个MATLAB用户贡献的,用一个函数来做同样的事情:
请注意,MathWorks不保证或保证提交到MATLAB中央文件交换的使用或内容。任何问题、问题或抱怨都应直接向特约作者提出。
更多答案(8)
Razvan Carbunescu
2019年5月9日
>> x=[10 25 4 10 9 4 4]';
> > grouptransform (x, x, @numel)
ans =
2
1
3.
2
1
3.
3.
> > [GC, GR) = groupcounts (x)
GC =
3.
1
2
1
GR =
4
9
10
25
7评论
雷蒙Villamangca
2018年10月25日
编辑:雷蒙Villamangca
2018年10月25日
我是这样做的:
numOccur = sum(arrayfun(@(x) x == elem,vec))
其中'elem'是给定向量'vec'中要搜索的元素。