bsxfun: Elementwise Function Application (Matlab Style)

View source: R/bsxfun.R

bsxfunR Documentation

Elementwise Function Application (Matlab Style)


Apply a binary function elementwise.


  bsxfun(func, x, y)

  arrayfun(func, ...)



function with two or more input parameters.

x, y

two vectors, matrices, or arrays of the same size.


list of arrays of the same size.


bsxfun applies element-by-element a binary function to two vectors, matrices, or arrays of the same size. For matrices, sweep is used for reasons of speed, otherwise mapply. (For arrays of more than two dimensions this may become very slow.)

arrayfun applies func to each element of the arrays and returns an array of the same size.


The result will be a vector or matrix of the same size as x, y.


The underlying function mapply can be applied in a more general setting with many function parameters:

mapply(f, x, y, z, ...)

but the array structure will not be preserved in this case.

See Also



X <- matrix(rep(1:10, each = 10), 10, 10)
Y <- t(X)
bsxfun("*", X, Y)  # multiplication table

f <- function(x, y) x[1] * y[1]     # function not vectorized
A <- matrix(c(2, 3, 5, 7), 2, 2)
B <- matrix(c(11, 13, 17, 19), 2, 2)
arrayfun(f, A, B)

pracma documentation built on Nov. 10, 2023, 1:14 a.m.