# Split matrix across the median

10 views (last 30 days)
M on 17 Dec 2012
How do I split a matrix across its median? Suppose I have a 5x10 matrix sorted in ascending order. I want to split this into two 5x5 matrices by finding the median of each row.
Then each sub-matrix will be further split k-times, for a huge matrix. The number of rows will remain constant.
M on 17 Dec 2012
Yes, there can be duplicates

Walter Roberson on 17 Dec 2012
If the rows are already sorted in ascending order, then the median is, by definition, right at the middle, so just index appropriately.
A1 = A(:,1:end/2);
A2 = A(:,end/2+1:end);
M on 17 Dec 2012
Thank you, this works on the example matrix. Now I have to test it on the actual data matrix which is 12x416 in size

Mark Whirdy on 17 Dec 2012
Edited: Mark Whirdy on 17 Dec 2012
a = rand(5,10);
b = repmat(median(a,1),10);
c1 = a; c1(a<b) = NaN;
c2 = a; c2(a>=b) = NaN;
.... what you're looking for? like Azzi, itshard to know without an example
Walter Roberson on 17 Dec 2012
Mark's code works by creating a "b" matrix the same size as the "a" matrix, with "b" containing copies of the row medians, and then doing an element-by-element comparison of the matrices. The result after his suggested computations is two matrices the same size as the original matrix, but with NaN in places indicating elements that were split over into the other matrix.