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

相关推荐
hoiii1872 分钟前
基于MATLAB实现无监督数据建模
开发语言·matlab
CoovallyAIHub5 分钟前
从电影特效到体育科学,运动追踪只能靠“人眼”吗?
深度学习·算法·计算机视觉
风筝在晴天搁浅5 分钟前
hot100 48.旋转图像
算法
TechNomad22 分钟前
排序算法:希尔排序算法
数据结构·算法·排序算法
热爱生活的猴子22 分钟前
算法中DFS & BFS 核心学习笔记
算法·深度优先·宽度优先
im_AMBER23 分钟前
Leetcode 83 使数组平衡的最少移除数目中等相关标签 | 尽可能使字符串相等
数据结构·c++·笔记·学习·算法·leetcode
TechNomad25 分钟前
排序算法:快速排序算法
算法·排序算法
xu_yule25 分钟前
算法基础(图论)—拓扑排序
c++·算法·动态规划·图论·拓扑排序·aov网
mu_guang_26 分钟前
算法图解1-算法简介
算法·cpu·计算机体系结构
CoovallyAIHub27 分钟前
超越CUDA围墙:国产GPU在架构、工艺与软件栈的“三维替代”挑战
深度学习·算法·计算机视觉