在MATLAB中用数字替换自定义字符串的有效方法

时间:2013-06-11 22:49:08

标签: matlab

我目前在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

当然这对于大的我来说真的很慢我希望将每个序列转换为整数值。有更快的方法吗?

1 个答案:

答案 0 :(得分:6)

你走在正确的轨道上。定义后:

serial_numbers = {'serial1'; 'serial1'; 's2'; 'serial31010'}

这似乎很简单:

[~,~,new_serial_numbers ] = unique(serial_numbers,'stable')

会给:

new_serial_numbers =   1   1   2   3

不了解“独特”功能的表现