我在matlab中有一个字符串的单元格数组。有些字符串可能相同。我想用字典编纂方式对字符串进行编号。
例如,如果我有{'abc','aty','utf8','sport','utf8','abc'}
,则在输出中我想获取数组[1, 2, 4, 3, 4, 1]
。
你能给我任何方法吗?
答案 0 :(得分:8)
重复的字符串使得sort
变得棘手,但在这种情况下,您可以依赖unique
适用于字符串的单元格数组的事实,并且两者都对其输出进行排序并可选地返回那些已排序的索引原始输入中的元素:
>> a = {'abc' 'aty' 'utf8' 'sport' 'utf8' 'abc'}
a =
{
[1,1] = abc
[1,2] = aty
[1,3] = utf8
[1,4] = sport
[1,5] = utf8
[1,6] = abc
}
>> [b, ~, index] = unique(a)
b =
{
[1,1] = abc
[1,2] = aty
[1,3] = sport
[1,4] = utf8
}
index =
1 2 4 3 4 1
或者如果你真的只想要索引,你显然可以使用[~, ~, index] = unique(a);
。