RunMat
GitHub

repelem — Replicate each element of an array along one or more dimensions.

repelem(A, r1, r2, ..., rN) repeats each element of A along the requested dimensions. Unlike repmat, which tiles whole arrays, repelem expands individual elements into runs or blocks.

How repelem works

  • repelem(v, n) repeats each element of a row or column vector v n times and preserves vector orientation.
  • repelem(v, counts) accepts a count vector with one non-negative integer count per element of v.
  • repelem(A, r1, r2, ..., rN) repeats matrix or N-D array elements along each dimension; scalar factors create element blocks and vector factors provide per-index counts for that dimension.
  • Numeric, logical, complex, string, char, and cell inputs are supported. Numeric, logical, complex, string, and cell arrays support N-D replication; char arrays are represented as 2-D character matrices.
  • Zero counts are allowed and remove the corresponding element or dimension slice from the output.
  • Replication counts must be finite, non-negative integers. Count vectors must match the size of the dimension they apply to.
  • The builtin checks shape and size overflow before materializing output arrays.

How RunMat runs repelem on the GPU

RunMat does not yet expose a provider hook for element-wise replication. Backends can add one later without changing the MATLAB-facing behavior.

GPU memory and residency

repelem is currently a host-resident array construction builtin. If a GPU tensor reaches this builtin, RunMat gathers it before replication.

Examples

Repeating every element of a row vector

u = repelem([1 2 3], 2)

Expected output:

u =
     1     1     2     2     3     3

Using a per-element count vector

u = repelem([1 2 3], [1 2 3])

Expected output:

u =
     1     2     2     3     3     3

Expanding a matrix into element blocks

A = [1 2; 3 4];
B = repelem(A, 2, 3)

Expected output:

B =
     1     1     1     2     2     2
     1     1     1     2     2     2
     3     3     3     4     4     4
     3     3     3     4     4     4

Dropping elements with zero counts

u = repelem([1 2 3 4 5], [0 1 0 2 1])

Expected output:

u =
     2     4     4     5

Repeating along a higher dimension

C = {1; 2};
D = repelem(reshape(C, [1 1 2]), 1, 1, 2);
size(D)

Expected output:

ans =
     1     1     4

FAQ

How is repelem different from repmat?

repmat tiles a whole array. repelem repeats each individual element, so matrix inputs expand into element-wise blocks.

Can counts be different for each element?

Yes. In vector form, the count vector must have one entry for each vector element. In multi-dimensional form, a count vector applies to the dimension at the same argument position.

Are zero counts valid?

Yes. A zero count omits that element or dimension index from the output.

Does repelem preserve row and column vector orientation?

Yes. Row vectors remain row vectors, column vectors remain column vectors, including empty column vectors.

Does repelem run on the GPU?

Not yet. The runtime gathers GPU tensors to host memory for this builtin, computes the replicated result on the CPU, and returns a host value.

Shape

cat · circshift · diag · flip · fliplr · flipud · horzcat · ipermute · kron · permute · repmat · reshape · rot90 · squeeze · tril · triu · vertcat

Sorting Sets

argsort · intersect · ismember · issorted · setdiff · sort · sortrows · union · unique

Creation

colon · eye · false · fill · linspace · logspace · magic · meshgrid · ones · peaks · rand · randi · randn · randperm · range · true · zeros

Indexing

find · ind2sub · sub2ind

Introspection

isempty · ismatrix · isscalar · isvector · length · ndims · numel · size

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how repelem works, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code — faster, on any GPU, with no license required.

  • Simulations that took hours now take minutes. RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed.
  • Start running code in seconds. Open the browser sandbox or download a single binary. No license server, no IT ticket, no setup.
  • A full development environment. GPU-accelerated 2D and 3D plotting, automatic versioning on every save, and a browser IDE you can share with a link.

Getting started · Benchmarks · Pricing

Try RunMat for free

Write code or describe what you want to compute. The sandbox is free, no account required.