image thumbnail

bsxarg

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

1.3K Downloads

Updated 11 Feb 2008

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

Syntax

[C D] = bsxarg(A,B)

Description

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')
end
[AX BX] = bsxarg(A,B);
if( ischar(fun) )
C = eval([fun '(AX,BX)']);
else
C = fun(AX,BX);
end
return
end

Cite As

James Tursa (2021). bsxarg (https://www.mathworks.com/matlabcentral/fileexchange/18686-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!