Here's how I would do it:
MedianMap = ... ( bsxfun(@gt,A,col_median) & bsxfun(@gt,A,row_median.') ) - ... ( bsxfun(@lt,A,col_median) & bsxfun(@lt,A,row_median.') );
This is multi-threaded (suitable for much larger problems) and does not have any of the temporary elements involved in other answers (a much smaller memory peak).
It's not very pretty, though :) So, if you have better readability, use either meshgrid , as in BrianL's answer, or repmat :
Col_median = repmat(col_median, size(A,1),1); Row_median = repmat(row_median.', 1, size(A,2)); MedianMap = ... ( A > Col_median & A > Row_median ) - ... ( A < Col_median & A < Row_median );
or multiplication by a single matrix, as Rasman did:
Col_median = ones(size(A,1),1) * col_median; Row_median = row_median.' * ones(1,size(A,2)); MedianMap = ... ( A > Col_median & A > Row_median ) - ... ( A < Col_median & A < Row_median );
source share