RunMat
  • Pricing
RunMat
GitHub
GitHub
DownloadSign InTry in Browser
DesktopRuntimeServer
RunMat

Run math blazing fast

GitHubX (Twitter)LinkedIn

Company

  • About
  • Pricing
  • Contact

Explore

  • RunMat for academia
  • RunMat vs MATLAB Online
  • Benchmarks

Get product updates and release notes from the RunMat team.

© 2026 Dystr · Made withfor the scientific community.

RunMat™ is a registered trademark of Dystr, Inc. MATLAB® is a registered trademark of The MathWorks, Inc. RunMat is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.

LicensePrivacy
/
See all docs
Builtin Reference
    • blkdiag
    • cat
    • circshift
    • diag
    • flip
    • fliplr
    • flipud
    • horzcat
    • ipermute
    • kron
    • permute
    • repelem
    • repmat
    • reshape
    • rot90
    • squeeze
    • toeplitz
    • tril
    • triu
    • vertcat

repelem — Repeat each element of an array by per-dimension replication factors, matching MATLAB repelem semantics.

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 repeated runs or blocks.

Syntax

B = repelem(A, R)
B = repelem(A, R1, R2, ...)

Inputs

NameTypeRequiredDefaultDescription
AAnyYes—Input array.
RAnyYes—Scalar or vector replication control argument.
R1_RNAnyVariadic—Per-dimension scalar/vector replication controls.

Returns

NameTypeDescription
BAnyArray with element-wise replication applied.

Errors

IdentifierWhenMessage
RunMat:repelem:MissingReplicationFactorsNo replication arguments are provided.repelem: replication factors must be specified
RunMat:repelem:InvalidReplicationFactorsReplication arguments are non-numeric, non-integer, or shape-incompatible.repelem: invalid replication factors
RunMat:repelem:UnsupportedInputInput type is unsupported for repelem.repelem: unsupported input type
RunMat:repelem:InternalInternal allocation/indexing path fails.repelem: internal operation failed

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.
  • All eight integer data classes are replicated from authoritative native storage and returned in the same class; typed integer replication counts are decoded structurally without a floating round trip.
  • 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.

Extended capabilities

  • repelem preserves the input value class for numeric dtype metadata, logical arrays, complex tensors, string arrays, char arrays, and cell arrays.
  • N-D numeric, logical, complex, string, and cell replication uses the runtime's native storage order for each value kind.

Does RunMat run 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 currently uses an exact owner-aware gather-and-restore fallback for GPU tensors, so automatic gathering remains transparent and explicit resident outputs preserve their source owner.

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

Using repelem with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how repelem changes the result.

Run a small repelem example, explain the result, then change one input and compare the output.

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.

Related Array functions

Shape

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

Grouping

accumarray · combinations · discretize · findgroups · groupcounts · grp2idx · splitapply

Sorting Sets

argsort · intersect · ismember · ismembertol · issorted · issortedrows · setdiff · setxor · sort · sortrows · union · unique

Creation

colon · createArray · empty · eye · false · full · inf · linspace · logspace · magic · meshgrid · nan · nchoosek · ndgrid · nonzeros · ones · peaks · perms · rand · randi · randn · randperm · range · sparse · spdiags · speye · spones · sprand · true · zeros

Indexing

find · ind2sub · sub2ind

Introspection

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

Open-source implementation

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

  • View the source for repelem in Rust on GitHub
  • Learn how the RunMat runtime works
  • Found a bug? Open an issue with a minimal reproduction.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.

Download RunMatOpen Sandbox
On this page
  • Syntax
  • Inputs
  • Returns
  • Errors
  • How repelem works
  • Extended capabilities
  • Does RunMat run repelem on the GPU?
  • GPU memory and residency
  • Examples
  • Repeating every element of a row vector
  • Using a per-element count vector
  • Expanding a matrix into element blocks
  • Dropping elements with zero counts
  • Repeating along a higher dimension
  • Using repelem with coding agents
  • FAQ
  • Related Array functions
  • Shape
  • Grouping
  • Sorting Sets
  • Creation
  • Indexing
  • Introspection
  • Open-source implementation
  • About RunMat