在Matlab中将数字向量分类到类别

时间:2017-04-03 13:41:57

标签: matlab

在Matlab中,我有一个名为NewRatings的1x2000变量,它只包含1到8之间的整数。

我想用与其编号对应的类别名称替换此变量中的每个值。

在名为{'AAA','AA','A','BBB','BB','B','CCC','Default'}的1x8单元变量中,类别为Ratings。所以我想将1的每个实例转换为AAA,将每个2的实例转换为AA,依此类推。

我尝试使用序数:

NewRatings = ordinal(NewRatings, Ratings) 

但这给了我错误

  

CATEGORYNAMES和VALUESET必须具有相同的长度。

我有8个可能的值和8个类别,所以我不明白这个问题是什么。我过去曾使用这些类似的数据来解决类似的问题而没有任何问题。我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您可以使用newRatings变量索引Ratings单元格字符串数组

newRatings_strings = Ratings(newRatings);

至于为什么ordinal不起作用,可能是因为18之间的每个值都没有在{{1}中表示}。您可以使用newRatings

进行检查
unique

如果您确实想使用unique(newRatings) ,则可以获得与ordinal

中的唯一值对应的Ratings
newRatings