Embiggen

Add (or multiply, divide, etc) a matrix A to a vector b with the simple syntax A + Embiggen(b)
436 téléchargements
Mise à jour 13 mai 2010

Afficher la licence

Embiggen is a class that makes Matrix-vector operations easier by virtually matching the size of a vector b to the size of amatrix A. This allows for such code as:

C = A + Embiggen(b)

Here A is a matrix (for example of size 100x50)
b is a vector (for example of size 100x1)

And the equation is understood as (in index notation)
C_ij = A_ij + b_j

Which is more readable than the alternatives:

C = A + b*ones(1,size(A,2));
C = A + repmat(b,1,size(A,2));
C = bsxfun(@plus,A,b);

Under the hood the "big matrix B" is never actually created, as bsxfun is used; however Embiggen avoids the ackward reverse polish notation style of bsxfun .

A neat example:

%Center and scale columns of a matrix
A = randn(50,60);
A = A - Embiggen(mean(A));
A = A ./ Embiggen(std(A));

mean(A) %vector of zeros
std(A) %vector of ones

The following operators are implemented:

A + Embiggen(b)
A - Embiggen(b)
A .* Embiggen(b)
A ./ Embiggen(b)
A .\ Embiggen(b)

And the logical operations:

A == Embiggen(b)
A ~= Embiggen(b)
A < Embiggen(b)
A > Embiggen(b)
A <= Embiggen(b)
A >= Embiggen(b)
A & Embiggen(b)
A | Embiggen(b)
xor(A, Embiggen(b))

As well as the functions:
max(A,Embiggen(b))
min(A,Embiggen(b))
rem(A,Embiggen(b))
mod(A,Embiggen(b))
atan2(A,Embiggen(b))
hypot(A,Embiggen(b))

Embiggen also works between any two multidimensional arrays A and B as long as each dimension of A and B is equal to each other, or equal to one.

Embiggen does not redefine any core Matlab classes, unlike other solutions (for example bsxops).

Citation pour cette source

Patrick Mineault (2024). Embiggen (https://www.mathworks.com/matlabcentral/fileexchange/27603-embiggen), MATLAB Central File Exchange. Récupéré le .

Compatibilité avec les versions de MATLAB
Créé avec R2008a
Compatible avec toutes les versions
Plateformes compatibles
Windows macOS Linux
Catégories
En savoir plus sur Logical dans Help Center et MATLAB Answers
Remerciements

Inspiré par : bsxops

Community Treasure Hunt

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

Start Hunting!
Version Publié le Notes de version
1.0.0.0