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
    • accumarray
    • combinations
    • discretize
    • findgroups
    • groupcounts
    • grp2idx
    • splitapply

discretize — Group numeric data into bins.

discretize(X,edges) returns one-based bin numbers for values in X using numeric bin edges. Integer X, edges, and replacement values support all eight integer classes.

Syntax

Y = discretize(X, edges)
Y = discretize(X, N)
Y = discretize(___, values)
Y = discretize(___, "IncludedEdge", side)
[Y, E] = discretize(X, N, ___)

Inputs

NameTypeRequiredDefaultDescription
XNumericArrayYes—Numeric input values to assign to bins.
edgesNumericArrayYes—Monotonically increasing numeric bin edges.
NNumericScalarYes—Positive integer number of equal-width bins.
edges_or_NAnyYes—Explicit numeric edges or a positive scalar bin count.
valuesAnyYes—One replacement value for each bin.
IncludedEdgeStringScalarYes—Literal option name "IncludedEdge".
sideStringScalarYes—Either "left" or "right".
argumentsAnyVariadic—Optional replacement values and IncludedEdge name-value pair.

Returns

NameTypeDescription
YAnyBin numbers or replacement values with the shape of X.
ENumericArrayComputed bin-edge row vector.

Returned values from discretize depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:grouping:InvalidInputInputs are malformed, have incompatible lengths, or request unsupported grouped output.grouping builtin: invalid input
RunMat:grouping:TooLargeThe requested dense or combinatorial output exceeds RunMat's materialization limit.grouping builtin: output is too large

How discretize works

  • Explicit integer X and edges are compared from authoritative typed storage, including values beyond flintmax; edges must be monotonically increasing and consecutive repeated edges are accepted.
  • discretize(X,N) creates N equal-width double edges, and [Y,E] = discretize(X,N,___) returns those computed edges as the second output. Explicit-edge calls return only Y. The current implementation materializes X in the floating computation domain for the scalar-bin-count form.
  • Only NaN values in X are intrinsically missing. Positive and negative infinity are binned normally when the corresponding outer edge is infinite.
  • Numeric replacement values preserve their class. Out-of-range and NaN inputs become NaN for floating replacement values and zero for integer replacement values.
  • String replacement values and the IncludedEdge name-value option are supported; the default is left-inclusive/right-exclusive with the final edge included.
  • Categorical replacement output is not yet implemented.

Example

Bin values

Y = discretize([0.2 1.5],[0 1 2])

Expected output:

Y = [1 2]

Using discretize with coding agents

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

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

Related Array functions

Grouping

accumarray · combinations · findgroups · groupcounts · grp2idx · splitapply

Sorting Sets

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

Shape

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

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 discretize is executed, line by line, in Rust.

  • View the source for discretize 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 discretize works
  • Example
  • Bin values
  • Using discretize with coding agents
  • Related Array functions
  • Grouping
  • Sorting Sets
  • Shape
  • Creation
  • Indexing
  • Introspection
  • Open-source implementation
  • About RunMat