Taking middle 4 values of n size array

조회 수: 36 (최근 30일)
James Morris
James Morris 2019년 8월 20일
댓글: James Morris 2019년 8월 23일
I know how to take the first 4 values of an n size array (1:4)
and the last 4 (end-4:end)
but how would I take the middle 4 values of an n size array no matter the length?
Thanks
  댓글 수: 1
the cyclist
the cyclist 2019년 8월 20일
Do you know if the number of array elements is always even, or always odd? How do you want to define the middle if there are an odd number?

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

채택된 답변

Jon
Jon 2019년 8월 20일
편집: Jon 2019년 8월 20일
You could use something like, for an array A
n = length(A(:)) % : treats as column even if this is actually a multidimensional array
midpoint = round(n/2)
select = A(midpoint-1:midpoint+2); % slightly unsymmetrical 1 before, 2 after
Note, you may have to further clarify, what your really mean by "middle 4". There are two sources of asymmetry inherent in taking the "middle 4". If there are an even number of elements then the "middle" one is either closer to one end or the other. Also as you are taking an even number (4) elements then either they are offset one way or the other from the selected middle element
  댓글 수: 4
Jon
Jon 2019년 8월 23일
Are you still looking for more help with this?
James Morris
James Morris 2019년 8월 23일
Sorry for the late reply. No I figured it out in the end. You guys are awesome, thank you.

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

추가 답변 (2개)

the cyclist
the cyclist 2019년 8월 20일
편집: the cyclist 2019년 8월 20일
Here is one way, assuming the number of elements is even:
% Input
a = rand(1,8);
numberElements = numel(a);
numberToRemove = numberElements - 4;
numberToRemoveFromEachEnd = numberToRemove/2;
output = a(numberToRemoveFromEachEnd+1:end-numberToRemoveFromEachEnd)

the cyclist
the cyclist 2019년 8월 20일
편집: the cyclist 2019년 8월 20일
Here is one way, which will work for either even- or odd-length arrays. It is not efficient.
% Input
a = rand(1,9);
whichEnd = 1;
while numel(a) > 4;
a = a(whichEnd:(end+whichEnd-2))
whichEnd = 3-whichEnd;
end
end
It will choose the "slightly left of center" for odd-length array.

카테고리

Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by