在MATLAB中用Map中的关键点替换向量中的值?

lnvxswe2  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(162)

我有一个非递减数据的向量。以下是一个示例:

1
 1
 1
 2
 2
 2
 2
 2
 2
 2
 2
 3
 3
 4
 4
 6

显然有重复的数字和丢失的数字。我可以使用unique删除重复项,因此我的唯一值是:
uniqueVals = unique(sortedData);
到现在为止还好。现在,我想更改数据,以便将sortedData中的值替换为它们在uniqueVals中的索引号。例如,uniqueVals前5个元素将是1,2,3,4,6,索引为1,2,3,4,5。我想更改sortedData,使1Map到1,2Map到2,3Map到3,4Map到4,6Map到5,依此类推。
我知道我可以创建一个“map”对象,但这似乎只是用来将uniqueValsMap到它的索引。如何应用该Map以更改sortedData中的条目?
我不需要这是一个特别快的操作。sortedData只包含几十万行,并且只需要执行一次。

rt4zxlrg

rt4zxlrg1#

您可以使用unique的第三个输出

[uniqueVals,~,yourOutput] = unique(sortedData);

您的产出=

1
 1
 1
 2
 2
 2
 2
 2
 2
 2
 2
 3
 3
 4
 4
 5
omhiaaxx

omhiaaxx2#

您还可以使用g = findgroups(sortedData);,它将为您提供组索引,其中每个唯一值有一个组。它的第二个输出告诉您值本身

[g, gValue] = findgroups( sortedData );

相关问题