我在 matlab 中有一个字符串元胞数组。有些字符串可能相等。我想按字典顺序对字符串进行编号。
例如,如果我有 {'abc','aty','utf8','sport','utf8','abc'}
,我想在输出中得到数组 [1, 2, 4, 3, 4, 1]
。
你能给我一些方法吗?
最佳答案
重复的字符串使 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);
如果您真的只想要索引。
关于string - 如何根据顺序对字符串进行编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285198/