File Exchange

## REPOP -- efficient replicating n-d array operations

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

1 Download

Updated 13 Oct 2010

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 (2021). 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!