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

Matlab如何拆分向量中的连续数值段?(矩阵维度限制说明)

拆分向量为连续数值段的方法

给定向量:

x = [1,2,4,5,7,8,9,11,12,13,14,15]

由于矩阵要求每行维度一致,无法直接转成每行长度不同的结构,可通过以下方法拆分出连续数值的小段:

MATLAB 实现

  1. 计算相邻元素的差值,定位连续段的分割点
  2. 使用细胞数组(cell array)存储不同长度的连续段

代码示例:

x = [1,2,4,5,7,8,9,11,12,13,14,15];
% 计算相邻元素差值
diff_x = diff(x);
% 找到分割位置(差值大于1的位置后移一位)
split_indices = find(diff_x > 1) + 1;
% 按分割点拆分向量为细胞数组
y = mat2cell(x, 1, diff([1, split_indices, length(x)+1]));

执行后得到的细胞数组 y 结构为:

y =
  1×4 cell array
    {[1 2]}    {[4 5]}    {[7 8 9]}    {[11 12 13 14 15]}

Python 实现

通过遍历向量,逐个判断元素是否属于当前连续段,完成拆分:

代码示例:

x = [1,2,4,5,7,8,9,11,12,13,14,15]
y = []
# 初始化第一个连续段
current_segment = [x[0]]

for num in x[1:]:
    # 判断当前元素是否与上一个元素连续
    if num == current_segment[-1] + 1:
        current_segment.append(num)
    else:
        # 结束当前段,开始新段
        y.append(current_segment)
        current_segment = [num]
# 添加最后一个连续段
y.append(current_segment)

执行后 y 的结果为:

[[1, 2], [4, 5], [7, 8, 9], [11, 12, 13, 14, 15]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:12:11