可这样:
clc
clear
A=[1 2 3 4 5 23 35 34 23 8 7 0 7 21 4 32 53 1 2 4 14];
k=find(A>30);
a=A(k);
s=diff(k);
if any(s>1)
n=length(find(s>1));
fprintf('有%d个不连续组:\n',n+1)
kk=find(s>1);
if n==1
a1=a(1:kk)
a2=a(kk+1:end)
end
else
disp('全连续')
end
要求比较特殊,没有什么现成的方法。我写了一个,仅供参考:
A = [1 2 3 4 5 23 35 34 23 8 7 0 7 21 4 32 53 1 2 4 14];
a = {};
index = 1;
itr = 1;
nA = length(A);
while itr < nA;
i = itr - 1 + find(A(itr:end) > 30, 1);
if isempty(i)
break
end
j = i - 1 + find(A(i:end) <= 30, 1);
if isempty(j)
j = nA + 1;
end
a{index} = A(i:j-1); %#ok
index = index + 1;
itr = j;
end
a{1}
a{2}
A=[1 2 3 4 5 23 35 34 23 8 7 0 7 21 4 32 53 1 2 4 14]
A =
Columns 1 through 17
1 2 3 4 5 23 35 34 23 8 7 0 7 21 4 32 53
Columns 18 through 21
1 2 4 14
>> a=A(A>30)
a =
35 34 32 53
>>
你的问题貌似没有说清楚啊,32 和 53 就不连续,怎么就放到一起了?