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);
James Tursa (2021). bsxarg (https://www.mathworks.com/matlabcentral/fileexchange/18686-bsxarg), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!