Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中获得矩阵中的唯一元素及其指数,其计数超过给定值_Matlab_Count_Unique - Fatal编程技术网

在Matlab中获得矩阵中的唯一元素及其指数,其计数超过给定值

在Matlab中获得矩阵中的唯一元素及其指数,其计数超过给定值,matlab,count,unique,Matlab,Count,Unique,我有一个向量,我想得到该向量中唯一元素的计数,并找到其计数大于给定值的元素的索引 例如,让 A = [1,2,2,1,1,1,5,5,5,1,1,5] [c,ia,ic] = unique(A) c_counts = accumarray(ic,1); 现在,我想找到给定值(例如t=4)中c==t的值的索引 t=4时的预期输出将为 7,8,9,12(5的指数正好出现4次),当t=6时,输出将为1,4,5,6,10,11(1的指数正好出现6次) =========================

我有一个向量,我想得到该向量中唯一元素的计数,并找到其计数大于给定值的元素的索引

例如,让

A = [1,2,2,1,1,1,5,5,5,1,1,5]
[c,ia,ic] = unique(A)
c_counts = accumarray(ic,1);
现在,我想找到给定值(例如t=4)中c==t的值的索引

t=4时的预期输出将为 7,8,9,12(5的指数正好出现4次),当t=6时,输出将为1,4,5,6,10,11(1的指数正好出现6次)

==================================更新======================= 我只想迭代前5个计数(5个最高计数值)。我得到cb_计数中唯一元素的计数,然后迭代5个最高的计数值以得到结果

如何在matlab中实现这一点?

用于获取每个元素的计数,并使用它获得
c
。现在,以获得计数,以其独特的元素。并用于获取
A
的相关指数,以了解其top-
t
计数的独特元素

t = 2;   %Number of top counts
tmp = sortrows([c.' accumarray(ic,1)], -2);  
out =  arrayfun(@(x) find(A==tmp(x,1)), 1:t, 'un', 0);

%or with a conventional loop instead of arrayfun:
%out = cell(1,t)
%for k=1:t
%   out{k} = find(A==tmp(k,1));
%end


如果你想要一个包含所有索引的向量,那么
[out{:}]
会给你这个值。

没有
a
。你是说
A
?你的预期产出是多少?声明explicitly@SardarUsama编辑了我的问题。如果多个值的出现次数相同,会发生什么情况?例如,如果第一个元素是
5
,而不是
1
,并且
t
是5,您自己会输入t=4、6等吗?如果没有,您希望在输出时得到什么?@Adiel在这种情况下,我需要与多个值对应的所有索引。例如,如果第一个元素是5而不是1,并且t=5,那么我希望索引中出现1和5。对于
sortrows
,我使用过多的输入得到错误,因为
down
仅为表inpot定义。对于矩阵输入,您可以使用sortrows(…,-2)@Adiel R2017a没有此类问题atleast@Adiel我按照您的建议修复了它,使其与旧版本兼容。谢谢您的尝试。@SardarUsama,如果我需要指定一个值而不是top-t计数,我应该编辑什么。例如,iif而不是前2个计数,我需要得到所有元素的索引,对应的计数大于[25,50100200]?@SardarUsama,对不起。仍然不确定输出的确切含义。与前一种情况一样,我可以使用向量作为输出。我正在尝试不同的组合以获得$t$的价值。一种可能是使用顶部计数,我正在考虑另一种可能的自定义计数,而不是顶部计数。
>> out{:}

ans =

     1     4     5     6    10    11


ans =

     7     8     9    12