File Exchange

image thumbnail

REPOP -- efficient replicating n-d array operations

version 1.3.0.0 (33.7 KB) by Jason Farquhar
REPOP -- any element-wise operator between different sized n-d matrices without memory copies

1 Download

Updated 13 Oct 2010

View Version History

View License

Replicating arithmetical and logical operators.

Does element by element operations on X and Y where non-same sized dimensions are implicity wrapped round to match the size of the larger
to give a result matrix Z with size max(size(X),size(Y));

In general this is at least 2x faster than the equivalent matlab code using repmats and has the advantage of requiring no additional memory.

Example Usage:
X = randn(10000,10); example signal with data in rows
stdX = repop(X,mean(X,1),'-'); subtract the mean vector
stdX = repop(stdX,std(stdX,0,1),'/'); % divide by std-deviation

Operator can be one of:

Arthemetical -- returns a double matrix
'+','.+',plus - Implicitly repmatted elementwise addition
'-','.-',minus - Implicitly repmatted elementwise addition
'*','.*',times - Implicitly repmatted elementwise multiplication
'^','.^',power - Implicitly repmatted elementwise raise X to power Y
'\','.\',ldivide- Implicitly repmatted elementwise divide Y by X
'/','./',rdivide- Implicitly repmatted elementwise divide X by Y

Relational -- returns a logical matrix
N.B. for complex inputs the <,>,<=,>= operators are based upon abs(x)
(not real(x) as in matlab)
'==',eq - Implicitly repmatted elementwise equality
'~=',ne - Implicitly repmatted elementwise dis-equality
'<' ,lt - Implicitly repmatted elementwise less than
'>' ,gt - Implicitly repmatted elementwise greater than
'<=',le - Implicitly repmatted elementwise less than equal
'>=',ge - Implicitly repmatted elementwise greater than equal

Cite As

Jason Farquhar (2020). REPOP -- efficient replicating n-d array operations (https://www.mathworks.com/matlabcentral/fileexchange/16276-repop-efficient-replicating-n-d-array-operations), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (2)

Rody Oldenhuis

That's exactly what I wanted to say :) Although bsxfun() is even better, since it can do its calculations in parallel on multicore computers.

h User

In R2007a and newer check out bsxfun.

MATLAB Release Compatibility
Created with R13
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!