Вы должны использовать permute
там «отправить» элементы ABB
к third dimension
создающего singleton dimensions
в dim-1
и dim-2
. Таким образом, конечный результат после применения bsxfun
(для однотонного расширения) был бы расширенным 3D array
, охватывающим сравнения для каждого элемента 2D-массива ABV
по отношению к каждому элементу 1D-массива ABB
. Таким образом, сделать что-то вроде этого -
test = bsxfun(@gt,ABV,permute(ABB(:),[3 2 1]))
Таким образом, каждый 3D срез test
будет сравнение всех элементов ABV
против одного из элементов в ABB
.
Поскольку ABB
является 1D массив, вы можете заменить permute
с reshape
-
test = bsxfun(@gt,ABV,reshape(ABB,1,1,[]))
Вы можете избежать использования bsxfun
в третьем измерении путем преобразования входного 2D массив в 1D массив и это может привести к более эффективному подходу, указанному здесь:
test = reshape(bsxfun(@gt,ABV(:),ABB(:).'),[size(ABV) numel(ABB)])