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

Matlab实现重复元素按组逐次递增1的方法求助

问题描述

现有数组:

v = [1,2,1,1,1,2,2]

需求:将1和2分为两组,每组元素每重复出现一次,对应值递增1,期望结果:

v2 = [1  1  2  3  4  2  3]

尝试过结合splitapply函数使用cumsum和movsum函数,但未成功实现需求。

解决方案

方法1:splitapply + cumsum组合

直接以数组元素作为分组标签,对每个分组内的元素做累积计数:

v = [1,2,1,1,1,2,2];
groups = v;
v2 = splitapply(@(x) cumsum(ones(size(x))), v, groups);

方法2:accumarray实现索引映射计数

通过索引矩阵记录每个元素的位置与分组,生成累积计数后提取对应结果:

v = [1,2,1,1,1,2,2];
counts = accumarray([(1:numel(v))', v'], 1, [], @cumsum);
v2 = counts(sub2ind(size(counts), 1:numel(v), v));

两种方法运行后均可得到期望的v2 = [1 1 2 3 4 2 3]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:57:06