如何在Matlab中生成符合指定重复规律的向量?
在Matlab中创建指定重复规律的向量
没问题,我来教你怎么生成这个符合要求的向量!先把你要的结构拆解清楚:
- 数字1到48:每个数字重复5次,紧接着跟2个0
- 数字49:重复2次,紧接着跟2个0
- 数字50:重复4次,后面没有0
下面给你两种实用的实现方式,按需选择:
方法一:分步拼接(直观易懂,适合新手)
这种方式每一步都清晰,容易理解和修改:
% 初始化空向量 Vector = []; % 处理1到48的常规部分 for k = 1:48 % 把当前数字重复5次,再加上2个0,拼接到向量末尾 Vector = [Vector, repmat(k, 1, 5), repmat(0, 1, 2)]; end % 处理49的特殊部分 Vector = [Vector, repmat(49, 1, 2), repmat(0, 1, 2)]; % 处理50的特殊部分 Vector = [Vector, repmat(50, 1, 4)];
方法二:无循环向量构造(高效,适合大数据量)
如果你的向量需要扩展到更大的范围,循环会拖慢速度,用repelem函数可以更高效地完成:
% 构造1-48的元素序列和对应的重复次数 elements_1_48 = reshape([1:48; zeros(1,48)], 1, []); counts_1_48 = reshape([5*ones(1,48); 2*ones(1,48)], 1, []); part1 = repelem(elements_1_48, counts_1_48); % 构造49的部分 part2 = repelem([49, 0], [2, 2]); % 构造50的部分 part3 = repelem(50, 4); % 拼接所有部分得到最终向量 Vector = [part1, part2, part3];
小提示
你可以用length(Vector)验证总长度是否符合预期:
- 1-48部分:每个组7个元素(5+2),共48×7=336个
- 49部分:4个元素(2+2)
- 50部分:4个元素
总长度应为336+4+4=344,和你给出的示例向量长度一致。
如果之后需要调整重复规律(比如修改某个数字的重复次数),只需要对应修改代码里的数字参数就可以啦!
内容的提问来源于stack exchange,提问作者maryam john
相关产品推荐
相关产品推荐

