File Exchange

image thumbnail

REPLICATE

version 1.2.0.0 (1.76 KB) by Mark Ruzon
Create a larger array by expanding each element of an array into a subarray.

1 Download

Updated 08 Dec 2008

View Version History

View License

REPLICATE is a companion to REPMAT, but instead of tiling a larger array with the input array, REPLICATE does the equivalent of calling REPMAT on each individual element and then tile the results together. It is faster than looping over each element. It supports 2D and 3D arrays.

Cite As

Mark Ruzon (2021). REPLICATE (https://www.mathworks.com/matlabcentral/fileexchange/22319-replicate), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (5)

Russell

I used replicate.m to generate some padding on a string cell array.

AA = {'blank'};
myLabels = {'fish','beer'};
myLabels = [ myLabels (replicate (AA,1,3)) ]
myLabels =
'fish' 'beer' 'blank' 'blank' 'blank'

Mark Ruzon

This is a more elegant and faster solution for the 2D case. The next version of the file will have this solution. Unfortunately, KRON gives 2D results when Y is 3D, so a different approach is needed in the 3D case.
A = reshape(1:6,[1 3 2]);
S = [2 2 2];
A(kron(reshape(1:numel(A),size(A)),ones(S)))
replicate(A,S)

Jos (10584)

Indexing with KRON is equally flexible:
% data
A = {12 {'yy' 'xxx'} ; 'aaa' rand(2)}
nr = 3 ;
nc = 5 ;
% engine
B = A(kron(reshape(1:numel(A),size(A)),ones([nr nc])))

Mark Ruzon

KRON works for floats and doubles but not integral types, structs, or cell arrays. KRON relies on multiplication, while REPLICATE uses only indexing, thus making it more flexible.

Jos (10584)

Nice try, but KRON can handle the job perfectly, for instance, kron(A,ones([2, 3]))

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