matlab如何判断一组数是连续的?

已知A=[1291011]在A中,我们明显看到2组连续的数1291011matlab如何能够判断出有2组?并且输出这两个数组,即输出[12][91011]... 已知 A=[1 2 9 10 11]
在A中,我们明显看到2组连续的数
1 2
9 10 11
matlab如何能够判断出有2组?并且输出这两个数组,即输出[1 2] [9 10 11]
展开
 我来答
PeriShare
2018-04-10 · 分享PD理论最新研究成果和进展
PeriShare
采纳数:2408 获赞数:36830

向TA提问 私信TA
展开全部
clc;clear
A  = [1 2 9 10 11 12 13 17 18 20 21 23 24];
c1 = 1;
arrset = cell(0,0);
while(c1<numel(A))
    c2 = 0;
    while (c1+c2+1<=numel(A)&&A(c1)+c2+1==A(c1+c2+1))
        c2 = c2+1;
    end
    if(c2>=1)
        arrset= [arrset;(A(c1:1:c1+c2))];
    end
    c1 = c1 + c2 +1;
end
fprintf('有%d组连续数:\n',numel(arrset))
celldisp(arrset) % 显示这些连续数

效果:

有5组连续数:
 
arrset{1} =
 
     1     2

 
 
arrset{2} =
 
     9    10    11    12    13

 
 
arrset{3} =
 
    17    18

 
 
arrset{4} =
 
    20    21

 
 
arrset{5} =
 
    23    24
更多追问追答
追问
感谢你,现在我还有一个问题,如何得到一个矩阵里包括几个数组,比如:[1  4  5  6  10],这个矩阵包括3个数组,即[1]  [4  5  6]  [10],请问怎样得到有几个数组呢?十分谢谢!
您的回答中numel(arrest)只得到了矩阵中包括了几个连续的数组。
匿名用户
2022-03-06
展开全部
2个while 循环嵌套,A为大型数组时效率将十分低,试试这个算法,只用一个for 循环:
clear
A = [1 2 9 10 11 12 13 17 18 20 21 23 24 25 26 30 33 34 35 36]
1:length(A) % 显示数组下标
i_diffA = diff(A,1) % 对数组A求一阶导
i_BreakIdx = find(i_diffA > 1) + 1 % 跳变点的下标
% 处理第一个跳点
i_arrset(1) = {A(1:i_BreakIdx(1) - 1)};
% 处理中间跳点

for i = 2:length(i_BreakIdx)
i_arrset(end+1) = {A(i_BreakIdx(i-1):i_BreakIdx(i)-1)};
end
% 处理最后一个跳点

i_arrset(end+1) = {A(i_BreakIdx(end):end)};
fprintf('有%d组连续数:\n',numel(i_arrset))

celldisp(i_arrset) % 显示这些连续数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友263aa55
2022-01-14
知道答主
回答量:13
采纳率:0%
帮助的人:5万
展开全部

回答提问者的追问问题,赋图:

clc;clear

A  = [1 4 5 6 10];

c1 = 1;

arrset = cell(0,0);

while(c1<=numel(A)) %相比大神的代码,这里做了修改,将<换成<=

    c2 = 0;

    while (c1+c2+1<=numel(A)&&A(c1)+c2+1==A(c1+c2+1))

        c2 = c2+1;

    end

    %if(c2>=1) %这个判断去掉

        arrset= [arrset;(A(c1:1:c1+c2))];

    %end

    c1 = c1 + c2 +1;

end

fprintf('有%d组连续数:\n',numel(arrset))

celldisp(arrset) % 显示这些连续数

运行结果。

感谢大神的代码,解了我的燃眉之急。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式