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

2025-03-10 09:01:55
推荐回答(4个)
回答1:

可这样:
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:

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

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}

回答3:

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:

你的问题貌似没有说清楚啊,32 和 53 就不连续,怎么就放到一起了?