Taking middle 4 values of n size array
29 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
James Morris
am 20 Aug. 2019
Kommentiert: James Morris
am 23 Aug. 2019
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 Kommentar
the cyclist
am 20 Aug. 2019
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?
Akzeptierte Antwort
Jon
am 20 Aug. 2019
Bearbeitet: Jon
am 20 Aug. 2019
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 Kommentare
Weitere Antworten (2)
the cyclist
am 20 Aug. 2019
Bearbeitet: the cyclist
am 20 Aug. 2019
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)
0 Kommentare
the cyclist
am 20 Aug. 2019
Bearbeitet: the cyclist
am 20 Aug. 2019
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.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!