我如何计算每个元素的出现在一个向量在MATLAB ?

1.738视图(30天)
我希望能够返回每个元素的计数出现在一个向量。
例如,如果我有一个向量:
25 4 10 9 4 4 x = [10]
我期望的结果
y = [2 1 3 2 1 3 3]。

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2020年2月27日
MATLAB R2019a,您可以使用“groupcounts”功能来计算的次数一个元素出现在一个向量作为总结。换句话说,下面的元素输出“GC”项中相应的元素值“GR”(从原始输入向量“x”):
x = 25 4 10 9 4 4 [10];
[GC, GR] = groupcounts (x)
GC =
3
1
2
1
GR =
4
9
10
25
在“groupcounts”的更多信息,请参见下面的文档链接:
推荐- - - - - -
MATLAB R2018b,您可以使用“grouptransform”功能,如果你想计算的次数一个元素出现在向量和输出计数为每个相应元素的输入向量。例如:
x = 25 4 10 9 4 4 [10];
y = grouptransform (x, x, @numel)
y =
2
1
3
2
1
3
3
在“grouptransform”的更多信息,请参见下面的文档链接:
推荐- - - - - -
MATLAB R2018b之前,虽然没有单独的函数来计算每个元素的出现,有几个方法来计算一个向量元素:
1。逻辑索引:
下面的代码片段将所需的输出:
y = 0(大小(x));
i = 1:长度(x)
y (i) =总和(x = = x (i));
结束
MATLAB R2016b和之后,您可以使用隐式扩张,进一步简化了代码:
y =总和(x = = ')
2。装箱:
您可以使用“嘘”和“独特”的相同的功能如下所示:
25 4 10 9 4 4 x = [10]
[a, b] =嘘(x,独特的(x))
3所示。第三方工具:
另一个解决方案,请参阅下列文件,CountMember。米”,这是由MATLAB用户做同样的从单一功能:
注意,MathWorks不担保或保证的使用或内容提交到MATLAB中央文件交换。任何问题,问题,或抱怨应该指向特约作者。
10评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年4月26日
//www.tianjin-qmedu.com/help/matlab/ref/double.groupcounts.html mw_92fbcf5a - 2 ab5 - 45 - d0 ac09 - 68 c1986c269f
当你使用groupcounts那么组的顺序返回的独特(排序)

登录置评。

更多的答案(8)

安德烈Bobrov
安德烈Bobrov 2014年8月14日
[a, b] = histc (x,独特的(x));
y = (b);
5个评论

登录置评。


Razvan Carbunescu
Razvan Carbunescu 2019年5月9日
有一种更简单的方法回答这个现在使用 groupcounts (R2019a)或 grouptransform (R2018b):
> > x = 25 4 10 9 4 4 [10];
> > 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评论
Razvan Carbunescu
Razvan Carbunescu 2019年6月7日
这似乎是一个非常不同的类型的问题可能直接的功能这一主题将帮助你。我发布这个问题作为一个单独的线程的输入/输出示例

登录置评。


朱利安Hapke
朱利安Hapke 2017年6月1日
编辑:朱利安Hapke 2017年6月1日
这是另一个:
总和(bsxfun (@eq x, x '), 1)
或者如果你想要输出相同的取向作为输入
总和(bsxfun (@eq x, x '),(大小(x, 2) = = 1) + 1)

杰克
杰克 2014年8月14日
这是尴尬的,因为它需要使用匿名函数内的输入数组,但是:
y = arrayfun (@ (t) nnz (x = = t), x);
也应该获得成功。

mittal54
mittal54 2015年5月16日
编辑:沃尔特·罗伯森 2017年8月16日
数量=独特(v);%的列表元素
数=嘘(v、数字);%提供了一个计算每个元素的出现
这将给数量。如果你想有一个漂亮的图形表示然后试试这个
栏(accumarray (v ', 1))
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2015年5月16日
当使用嘘()注意丹的 评论 上面指出的缺陷的方法。这个缺陷不是共享的 安德烈histc的方法 以上。

登录置评。


Truong表象
Truong表象 2017年8月16日
我需要帮助计算中出现的每个元素一个矩阵。谢谢
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2017年8月16日
[uvals, ~, uidx] =独特(YourArray);
输出= [uvals accumarray (uidx 1)];
这将产生一个N x 2被独特的数组值数组的第一列和第二列相关的计算。

登录置评。


lamghari
lamghari 2015年11月30日
嗨,我想数一数之后出现的每个元素在一个向量。
如果我的输入
x = [1 1 1 2 2 1 1 2 5 5]
我需要一个输出
y =[1 2 1 2 5; 3 2 2 1 2]我怎么做呢?

雷蒙Villamangca
雷蒙Villamangca 2018年10月25日
编辑:雷蒙Villamangca 2018年10月25日
这就是我如何做:
numOccur =总和(arrayfun (@ x (x) = = elem vec))
“elem”,在给定的向量元素搜索“矢量”。

类别

找到更多的在数据类型识别帮助中心文件交换

s manbetx 845


释放

R14SP1

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的