How to extract values from an array?

조회 수: 20 (최근 30일)
Daniel Adeniyi
Daniel Adeniyi 2022년 3월 9일
답변: Rik 2022년 3월 9일
Hello all,
I have an array with values that repeat , is it possible to determine the start and end points of a particular value in the array. For example
array = [10 10 10 30 30 30 30 30 4 4 4 4 4 30 30 30 30 30 30 2 2 2 2 2 30 30 30 30];
the goal is to extract those values in between the 30s.
How can i go about this? Thanks
  댓글 수: 4
Rik
Rik 2022년 3월 9일
If you want to extract the numbers, do you mean you want [4 2], or [4 4 4 4 4 2 2 2 2 2];? (or something else)
That is also probably important information if David's answer doesn't work for you.
Daniel Adeniyi
Daniel Adeniyi 2022년 3월 9일
Yes you are right, I would want as output [4 4 4 4 4 2 2 2 2 2].

댓글을 달려면 로그인하십시오.

채택된 답변

Rik
Rik 2022년 3월 9일
Using RunLength by Jan:
array = [10 10 10 30 30 30 30 30 4 4 4 4 4 30 30 30 30 30 30 2 2 2 2 2 30 30 30 30];
%first select only the parts between the first and last 30
new_array=array(find(array==30,1,'first'):find(array==30,1,'last'));
[B, N] = RunLength(new_array)
B = 1×5
30 4 30 2 30
N = 5×1
5 5 6 5 4
%remove the 30s
L=B==30;
B(L)=[];
N(L)=[];
%decode back to the normal array
new_array = RunLength(B, N)
new_array = 1×10
4 4 4 4 4 2 2 2 2 2

추가 답변 (1개)

David Hill
David Hill 2022년 3월 9일
a=num2str(yourArray==30);
a=a(a~=' ');
[s,f]=regexp(a,'[1]*');
new_array=[s,f];
  댓글 수: 1
Daniel Adeniyi
Daniel Adeniyi 2022년 3월 9일
Is it possible to have an output such as [4 4 4 4 4 2 2 2 2 2] instead of their unique value.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by