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, 拆分长度):将一维数组按指定长度拆分为细胞数组。

相关推荐
Gofarlic_oms11 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
田梓燊2 小时前
力扣:23.合并 K 个升序链表
算法·leetcode·链表
re林檎3 小时前
算法札记——4.27
算法
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
小白小宋3 小时前
【PUSCH第三期】5G NR QC-LDPC编码深度解析:从协议校验矩阵构造到MATLAB完整实现
5g·matlab·矩阵
数据牧羊人的成长笔记3 小时前
逻辑回归与Softmax回归
算法·回归·逻辑回归
郑州光合科技余经理4 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
Mrlxl.cn6 小时前
计算机网络——网络层
c语言·数据结构·计算机网络·考研
d111111111d7 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜7 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发