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
    • numArgumentsFromSubscript
    • subsasgn
    • subsref

subsref — Dispatch overloaded object indexing operations to class-specific Class.subsref implementations.

subsref(obj, kind, payload) is the internal dispatch builtin for overloaded object indexing. MATLAB-style field, paren, and brace indexing lowers to this mechanism, which resolves class-specific Class.subsref handlers.

Syntax

out = subsref(obj, kind, payload)

Inputs

NameTypeRequiredDefaultDescription
objAnyYes—Object receiver.
kindStringScalarYes—Indexing kind token ('()', '{}', '.').
payloadAnyYes—Indexing payload.

Returns

NameTypeDescription
outAnyIndexed value.

Errors

IdentifierWhenMessage
RunMat:InvalidObjectDispatchReceiver is not an object or handle object.subsref: requires object receiver
RunMat:MissingSubsrefTarget class does not implement subsref.subsref: class does not define subsref for indexing operation

How subsref works

  • The receiver must be an object or handle object.
  • The kind argument selects the indexing form: '.', '()', or '{}'.
  • For dot indexing, payload is typically a field/property name string.
  • For () and {} indexing, payload is typically a cell array of indices.
  • The builtin forwards the call to the receiver's class-specific Class.subsref implementation.
  • Integer selectors inside the payload retain their native class, exact value, shape, and resident handle. The class method determines output class, conversion, and overflow behavior.
  • Prefer normal indexing syntax in user code; direct calls to subsref are mainly useful for advanced dispatch or testing.

Does RunMat run subsref on the GPU?

subsref performs no provider dispatch; it forwards indexing requests to the appropriate class-specific host implementation.

GPU memory and residency

subsref is host-side object dispatch and does not itself manage GPU residency.

Examples

Index a datetime array explicitly

t = datetime([2024 2025], [1 6], [15 20]);
item = subsref(t, "()", {2})

Expected output:

item =
  20-Jun-2025 00:00:00

Read a datetime property explicitly

t = datetime(2024, 4, 9);
fmt = subsref(t, ".", "Format")

Expected output:

fmt =
    'dd-MMM-yyyy HH:mm:ss'

Using subsref with coding agents

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

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

FAQ

Should I call subsref directly in normal code?⌄

Usually no. Prefer ordinary syntax like obj.field or obj(2). Direct calls are mainly for advanced dispatch and testing.

What values can kind take?⌄

RunMat's object-dispatch path expects '.', '()', or '{}'.

What does the global subsref actually do?⌄

It resolves the receiver's class and forwards the operation to that class's Class.subsref implementation.

Related Oop functions

Indexing

numArgumentsFromSubscript · subsasgn

Serialization

loadobj · saveobj

Open-source implementation

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

  • View the source for subsref 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 subsref works
  • Does RunMat run subsref on the GPU?
  • GPU memory and residency
  • Examples
  • Index a datetime array explicitly
  • Read a datetime property explicitly
  • Using subsref with coding agents
  • FAQ
  • Related Oop functions
  • Indexing
  • Serialization
  • Open-source implementation
  • About RunMat