我目前在MATLAB中有一个包含序列号列表的单元格数组。序列号基本上是没有任何特定结构的字符串 - 所以我的单元格数组是这样的:
serial_numbers = {'serial1'; 'SERIAL1'; 'S2'; 'serial31010'}
鉴于serial_numbers中的每个唯一字符串对应不同的项目,我想为每个字符分配一个整数值...所以我可以更改
serial_numbers = {'serial1'; 'SERIAL1'; 'S2'; 'serial31010'}
到
new_serial_numbers = [1;1;2;3]
现在,我通过使用unique和strcmp函数来完成此操作
unique_serial_numbers = unique(serial_numbers);
new_serial_numbers = nan(size(serial_numbers));
for i = 1:length(unique_serial_numbers)
new_serial_numbers(strcmp(serial_numbers,unique_serial_numbers(i))) = i;
end
当然这对于大的我来说真的很慢我希望将每个序列转换为整数值。有更快的方法吗?
答案 0 :(得分:6)
你走在正确的轨道上。定义后:
serial_numbers = {'serial1'; 'serial1'; 's2'; 'serial31010'}
这似乎很简单:
[~,~,new_serial_numbers ] = unique(serial_numbers,'stable')
会给:
new_serial_numbers = 1 1 2 3
不了解“独特”功能的表现