Matlab 重新标记矩阵,将所有唯一数字替换为1..N

Matlab 重新标记矩阵,将所有唯一数字替换为1..N,matlab,image-processing,image-segmentation,Matlab,Image Processing,Image Segmentation,我正在使用MATLAB。我有一个矩阵,其中有N元素,元素中填充了数字[1;N],但它们之间只有K唯一的数字(K比N小得多)。什么是重新标记矩阵的有效方法,以便它只包含数字[1;K]?相等的数字应该变为相等,不相等的数字应该变为不相等 例如N=10,K=4: [1 4 8 9 4 1 8 9 4 1] -> [1 2 3 4 2 1 3 4 2 1] N~1000 000 K~10000 使用unique的第三个输出参数: a=[1 4 8 9 4 1 8 9 4 1]; [~, ~,

我正在使用MATLAB。我有一个矩阵,其中有
N
元素,元素中填充了数字
[1;N]
,但它们之间只有
K
唯一的数字(
K
N
小得多)。什么是重新标记矩阵的有效方法,以便它只包含数字
[1;K]
?相等的数字应该变为相等,不相等的数字应该变为不相等

例如
N=10
K=4

[1 4 8 9 4 1 8 9 4 1] -> [1 2 3 4 2 1 3 4 2 1]
  • N~1000 000
  • K~10000

使用
unique的第三个输出参数:

a=[1 4 8 9 4 1 8 9 4 1];
[~, ~, b] = unique(a)
b =
     1     2     3     4     2     1     3     4     2     1

刚刚意识到,如果输入中有NAN,这将不起作用,因为
unique
将为它们分配所有不同的数字。也许这对你来说不是问题。是的,这对我来说不是问题。