主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

countcats

按类别统计分类数组元素的出现次数

说明

B = countcats(A) 返回一个分类数组的每个类别中的元素数。计数的顺序与 categories 函数列出的类别顺序相同。

  • 如果 A 是向量,则 countcats 返回每个类别中的元素数。

  • 如果 A 是矩阵,则 countcatsA 的各列视为向量,并返回 A 的每列的类别计数。

  • 如果 A 是多维数组,则 countcats 沿大小不等于 1 的第一个数组维度计算。

要显示类别名称和每个类别中元素数的分类数组的汇总,请使用 summary 函数。

示例

B = countcats(A,dim) 返回沿维度 dim 的类别计数。

例如,可以使用 countcats(A,2) 返回分类数组中每行的类别计数。

示例

示例

全部折叠

创建一个分类数组。

A = categorical(["red" "blue" "green" "blue" "red"],["red" "green" "blue"])
A = 1×5 categorical
     red      blue      green      blue      red 

它包含三个类别:redgreenblue

categories(A)
ans = 3×1 cell
    {'red'  }
    {'green'}
    {'blue' }

计算 A 的每个类别中的元素数量。

  • B 中的第一个元素对应于 A 的第一个类别,即 red

  • B 中的第二个元素对应于 A 的第二个类别,即 green

  • B 中的第三个元素对应于 A 的第三个类别,即 blue

B = countcats(A)
B = 1×3

     2     1     2

使用 summary 函数可以看到相同的结果。

summary(A)
A: 1×5 categorical

     red      green      blue      <undefined> 
     2        1          2         0           

创建一个 3×2 分类数组。

valueset = 1:3;
catnames = ["red" "green" "blue"];
A = categorical([1 3; 2 1; 3 1],valueset,catnames)
A = 3×2 categorical
     red        blue 
     green      red  
     blue       red  

它包含三个类别:redgreenblue

categories(A)
ans = 3×1 cell
    {'red'  }
    {'green'}
    {'blue' }

计算 A 中每列的类别计数。计数的顺序与 categories 函数列出的类别顺序相同。

  • redA 的第一列中出现一次,在第二列中出现两次。

  • greenA 的第一列中出现一次,在第二列中不出现。

  • blueA 的第一列中出现一次,在第二列中出现一次。

B = countcats(A)
B = 3×2

     1     2
     1     0
     1     1

使用 summary 函数可以看到相同的结果。

summary(A)
A: 3×2 categorical

     red              1      2 
     green            1      0 
     blue             1      1 
     <undefined>      0      0 

创建一个 3×2 分类数组。

valueset = 1:3;
catnames = ["red" "green" "blue"];
A = categorical([1 3; 2 1; 3 1],valueset,catnames)
A = 3×2 categorical
     red        blue 
     green      red  
     blue       red  

它包含三个类别:redgreenblue

categories(A)
ans = 3×1 cell
    {'red'  }
    {'green'}
    {'blue' }

计算 A 沿第二个维度的类别计数。计数的顺序与 categories 函数列出的类别顺序相同。

  • redA 的第一行以及第二行、第三行中出现一次。

  • green 仅出现在一个元素中。该元素位于 A 的第二行中。

  • blueA 的第一行中出现一次,在第三行中出现一次。

B = countcats(A,2)
B = 3×3

     1     0     1
     1     1     0
     1     0     1

使用 summary 函数可以看到相同的结果。

summary(A,2)
A: 3×2 categorical

     red      green      blue      <undefined> 
     1        0          1         0           
     1        1          0         0           
     1        0          1         0           

countcats 函数不会返回分类数组中未定义元素的数量。

创建一个 6×1 分类数组。

valueset = 1:3;
catnames = ["red" "green" "blue"];
A = categorical([1;3;2;1;3;1],valueset,catnames)
A = 6×1 categorical
     red 
     blue 
     green 
     red 
     blue 
     red 

删除 blue 类别。A 有两个类别,即可 redgreen。属于 blue 类别的 A 的元素现在未定义。

A = removecats(A,"blue")
A = 6×1 categorical
     red 
     <undefined> 
     green 
     red 
     <undefined> 
     red 

计算 A 的每个类别中的元素数量。

  • redA 中出现三次。

  • greenA 中出现一次。

  • countcats 不返回未定义元素的数量。

B = countcats(A)
B = 2×1

     3
     1

要查看未定义元素的数量以及 A 的每个类别中的元素数,请使用 summary 函数。

summary(A)
A: 6×1 categorical

     red              3 
     green            1 
     <undefined>      2 

输入参数

全部折叠

输入数组,指定为分类数组。

沿其运算的维度,指定为正整数标量。如果不指定维度,则默认值是大小不等于 1 的第一个数组维度。

以一个二维分类数组 A 为例。

如果 dim = 1,则 countcats(A,1) 返回 A 的每列的类别计数。

如果 dim = 2,则 countcats(A,2) 返回 A 的每行的类别计数。

如果 dim 大于 ndims(A),则 countcats(A) 为每个类别返回大小与 A 相同的数组。countcats 为对应类别中的元素返回 1,否则返回 0

提示

  • 要计算分类数组中未定义的元素数,必须使用 summaryisundefined

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2013b 中推出