version (4.9 KB) by James Tursa
bsxarg returns the physically expanded arrays associated with bsxfun


Updated Mon, 11 Feb 2008 08:11:00 +0000

No License

bsxarg returns the singleton expanded arrays that are virtually used in bsxfun. bsxarg is limited to a maximum of 12 dimensions. The MATLAB intrinsic function bsxfun performs binary operations on input arrays, where singleton dimensions are virtually expanded to perform the operation. bsxarg will actually do the singleton expansion and return the physically expanded arrays.

Building (one-time only):

>> mex -setup
(then follow instructions to select a C / C++ compiler of your choice)
>> mex bsxarg.c


[C D] = bsxarg(A,B)


C = the expanded version of A.
D = the expanded version of B.

Each dimension of A and B must either be equal to each other, or equal to 1. Whenever a dimension of A or B is singleton (equal to 1), the array is virtually replicated along the dimension to match the other array. The array may be diminished if the corresponding dimension of the other array is 0.

The size of the output arrays C and D are equal to:

max(size(A),size(B)).*(size(A)>0 & size(B)>0).

User's with older versions of MATLAB that do not have the MATLAB intrinsic bsxfun available to them can use this simple m-file to get that capability:

function C = bsxfun(fun,A,B)
if( nargin ~= 3 )
error('Need 3 arguments for bsxfun')
[AX BX] = bsxarg(A,B);
if( ischar(fun) )
C = eval([fun '(AX,BX)']);
C = fun(AX,BX);

Cite As

James Tursa (2022). bsxarg (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2006a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!