在向量中查找特定值的计数

时间:2014-03-28 19:50:41

标签: arrays matlab

我在1:6中生成20个随机整数的向量。为了更加清晰:d = floor ( 6 * rand ( 1 , 20 ) + 1)。如何用MATLAB计算六个数?

4 个答案:

答案 0 :(得分:5)

请使用此 -

count = nnz(d==6)

nnz的一个用途是计算找到的匹配数。在这种情况下,它会对d的每个元素与6进行比较,并根据找到或未找到的匹配返回oneszeros的逻辑数组。然后nnz将计算ones的出现次数。 nnz对于此类案例来说确实是一种非常有效的工具,请尝试探索它。

答案 1 :(得分:1)

nnz(d==6)

Divakar给出的很棒。但使用sum通常会更快:

sum(d(:)==6)

示例:

d = floor ( 6 * rand ( 1 , 2e6 ) + 1);
tic;nnz(d==6);toc;
tic;sum(d(:)==6);toc;

给出:

Elapsed time is 0.020109 seconds.
Elapsed time is 0.012709 seconds.

答案 2 :(得分:0)

如果您只想计算单个值的出现次数,请使用nnz(d==6)作为@Divakar建议,但如果您想计算多个值的总数,则为3s 6s说,你可以用ismember

来做到这一点
num3s6s = nnz(ismember(d,[3 6]))

同样如下:

num3s6s = nnz(d==3 | d==6)

答案 3 :(得分:0)

如果您想获得每个值的计数:使用histc

d = [1 2 4 2 3 4 5 4 3 6]; %// example data
values = 1:6; %// values you want the count of
count = histc(d, values);

这给出了

count =
     1     2     2     3     1     1