matlab之将一个升序数组按照元素值连续与否分成多组

先给程序(豆包生成):

复制代码
% 输入有序数组(无重复整数)
arr = [1,2,3,5,6,8,9,10,12,13,14,15];

% 步骤1:计算差分(后一个元素 - 前一个元素),找到中断点(差分≠1的位置)
diff_arr = diff(arr);  % 差分结果:[1,1,2,1,2,1,1,2,1,1,1]
break_points = find(diff_arr ~= 1);  % 中断点位置(+1是因为diff结果长度比原数组少1)

% 步骤2:按中断点拆分数组为子组
if isempty(break_points)
    % 无中断点,整个数组为一组
    groups = {arr};
else
    % 拆分逻辑:从开头到第一个断点,第一个断点到第二个断点,...,最后一个断点到结尾
    groups = mat2cell(arr, 1, diff([0, break_points, length(arr)]));
end

% 输出结果
fprintf('分组结果:\n');
for i = 1:length(groups)
    fprintf('第%d组:%s\n', i, num2str(groups{i}));
end

程序结果:

分组结果:

第1组:1 2 3

第2组:5 6

第3组:8 9 10

第4组:12 13 14 15

关于mat2cell,见文章:

matlab中的mat2cell及cellfun使用-腾讯云开发者社区-腾讯云 (tencent.com)

mat2cell(arr, 1, 拆分长度):将一维数组按指定长度拆分为细胞数组。

相关推荐
先吃饱再说7 小时前
判断回文字符串,从一行代码到双指针优化
算法
黄敬峰10 小时前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术11 小时前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
用户7121227512614 小时前
MATLAB 自动化 Excel 转 SLDD 数据字典完整方案(适配自定义 THBPackage 存储类)
matlab
AI小老六14 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术15 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize16 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
罗西的思考1 天前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
CSharp精选营1 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型