我在1:6中生成20个随机整数的向量。为了更加清晰:d = floor ( 6 * rand ( 1 , 20 ) + 1)
。如何用MATLAB计算六个数?
答案 0 :(得分:5)
请使用此 -
count = nnz(d==6)
nnz
的一个用途是计算找到的匹配数。在这种情况下,它会对d
的每个元素与6
进行比较,并根据找到或未找到的匹配返回ones
或zeros
的逻辑数组。然后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