1

我目前在 MATLAB 中有一个包含序列号列表的单元格数组。序列号基本上是没有任何特定结构的字符串 - 所以我的单元格数组类似于:

序列号 = {'serial1'; '序列1'; 's2'; '序列31010'}

鉴于 serial_numbers 中的每个唯一字符串对应于不同的项目,我想为它们中的每一个分配一个整数值......所以我可以改变

序列号 = {'serial1'; '序列1'; 's2'; '序列31010'}

进入

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

当然这对于大型来说真的很慢,我想将每个序列转换为整数值。有没有更快的方法来做到这一点?

4

1 回答 1

7

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

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

这似乎很简单:

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

会给:

new_serial_numbers =   1   1   2   3

不知道“独特”功能的性能

于 2013-06-11T23:10:26.563 回答