You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中通过映射表将向量值替换为对应索引?

将非递减向量元素替换为其在唯一值数组中的索引

假设你已经有一个非递减的向量sortedData,并通过uniqueVals = unique(sortedData);得到了去重后的唯一值数组。下面提供两种简单的方法,把sortedData中的每个元素替换成它在uniqueVals里的索引(从1开始计数,比如示例中的6会被替换为5):

方法一:利用ismember的索引输出(最直接高效)

MATLAB的ismember函数可以返回两个输出参数,第二个参数就是原数组元素在目标数组中的位置索引:

[~, mappedIndices] = ismember(sortedData, uniqueVals);

执行后,mappedIndices就是你需要的结果数组,每个元素对应原sortedData元素在uniqueVals中的索引位置。这个方法代码简洁,几十万行数据的处理完全没问题。

方法二:使用容器映射(Map)实现

如果你更倾向于用映射对象来管理键值关系,可以按照以下步骤操作:

  1. 创建从唯一值到索引的映射:
valueMap = containers.Map(uniqueVals, 1:length(uniqueVals));
  1. 将映射应用到原向量:
mappedIndices = arrayfun(@(val) valueMap(val), sortedData);

这种方式逻辑清晰,适合需要显式管理映射关系的场景,对于你的数据量来说完全够用。

内容的提问来源于stack exchange,提问作者Michael Stachowsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:35:24