基于向量相邻元素生成带重复的连续数值向量(MATLAB)
在MATLAB中生成指定重复规则的向量v2
给定向量:
v = [1, 4, 7, 12, 16, 20];
需要生成向量v2,其中连续数值1到5分别重复4、3、5、4、4次,期望输出:
v2 = [1,1,1,1, 2,2,2, 3,3,3,3,3, 4,4,4,4, 5,5,5,5]
方法1:直接构造重复次数数组
利用MATLAB内置的repelem函数,该函数可将指定元素按给定次数重复:
v = [1, 4, 7, 12, 16, 20]; % 定义每个数值的重复次数 counts = [4, 3, 5, 4, 4]; % 生成目标向量 v2 = repelem(1:length(counts), counts);
方法2:从原向量v自动计算重复次数
根据示例规则,重复次数的计算逻辑为:第一个数值的重复次数是v(2)-v(1)+1,后续数值的重复次数为原向量相邻元素的差值。代码实现如下:
v = [1, 4, 7, 12, 16, 20]; % 计算相邻元素差值 diffs = diff(v); % 构造重复次数数组 counts = [diffs(1)+1, diffs(2:end)]; % 生成目标向量 v2 = repelem(1:length(counts), counts);
验证结果
运行代码后执行disp(v2),输出结果与期望一致:
1 1 1 1 2 2 2 3 3 3 3 3 4 4 4 4 5 5 5 5
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

