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

相关推荐
蛋先生DX18 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面18 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号19 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
马拉AI19 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
MC皮蛋侠客20 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
疯狂打码的少年20 小时前
【数据结构】队列:定义、顺序队列与链式队列
数据结构·笔记
地平线开发者20 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者21 小时前
【征程6】校准量化中HistogramObserver解析
算法
蔬菜_21 小时前
前端转全栈-day5(数组、list、set)
java·前端·数据结构·list
OuO-221 小时前
笔试强训 Day 34:ISBN 号码、kotori 和迷宫、矩阵最长递增路径
java·算法·矩阵