Matlab从数组查找并选出符合条件的值

A=[1 2 3 4 5 23 35 34 23 8 7 0 7 21 4 32 53 1 2 4 14]
想找出大于30的数,如果不连续,分开保存

想要如下结果 a1=[35 34]

a2=[32 53]
是连续满足条件的保存下来

第1个回答  推荐于2018-05-10
可这样:
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本回答被网友采纳
第2个回答  2017-07-14

要求比较特殊,没有什么现成的方法。我写了一个,仅供参考:

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<AGROW>
    index = index + 1;
    itr = j;
end

a{1}
a{2}

第3个回答  2012-08-16
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
>>追问

是连续满足条件的保存下来

本回答被网友采纳
第4个回答  2012-08-17
你的问题貌似没有说清楚啊,32 和 53 就不连续,怎么就放到一起了?追问

是连续满足条件的保存下来

相似回答