Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

isprotected

确定分类数组的类别是否受保护

说明

示例

如果 A 的类别受保护,tf = isprotected(A) 将返回逻辑值 1 (true)。否则,isprotected 将返回逻辑值 0 (false)。

  • true - 在向 B 赋新值时,这些值必须属于现有类别之一。因此,您只能合并具有相同类别的数组。要向 B 添加新类别,必须使用 addcats 函数。

  • false - 在向 B 赋新值时,类别会自动更新。因此,您可以合并具有不同类别的(非有序)分类数组。类别可更新,以便同时包含这两个数组中的类别。

示例

全部折叠

创建一个大小包含 10 个对象的分类数组。对值 'S''M''L' 应用名称 smallmediumlarge

valueset = {'S','M','L'};
catnames = {'small','medium','large'};

A = categorical({'M';'L';'S';'S';'M';'L';'M';'L';'M';'S'},...
    valueset,catnames,'Ordinal',true)
A = 10x1 categorical
     medium 
     large 
     small 
     small 
     medium 
     large 
     medium 
     large 
     medium 
     small 

A 是一个 10×1 的分类数组。

显示 A 的类别。

categories(A)
ans = 3x1 cell
    {'small' }
    {'medium'}
    {'large' }

确定 A 的类别是否受保护。

tf = isprotected(A)
tf = logical
   1

由于 A 是有序分类数组,因此类别受保护。如果试图添加不属于现有类别之一的新值(例如 A(11) = 'xlarge'),则返回一个错误。

先使用 addcatsxlarge 添加新类别。

A = addcats(A,'xlarge','After','large');

虽然 A 受保护,但您现在仍可以为 xlarge 添加值,因为它现在已经有了这个新类别。

A(11) = 'xlarge'
A = 11x1 categorical
     medium 
     large 
     small 
     small 
     medium 
     large 
     medium 
     large 
     medium 
     small 
     xlarge 

A 现在是包含四个类别的 11×1 分类数组,满足 small < medium < large < xlarge

输入参数

全部折叠

分类数组,指定为向量、矩阵或多维数组。

有序分类数组的类别始终受保护。

扩展功能

在 R2013b 中推出