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
    • fieldnames
    • getfield
    • isfield
    • orderfields
    • rmfield
    • setfield
    • struct
    • structfun

rmfield — Remove one or more named fields from structs or struct arrays with MATLAB-compatible validation.

S2 = rmfield(S, name) returns a copy of S with the named field removed. It accepts multiple field names, string arrays, or cell arrays of names and follows MATLAB-compatible errors for missing fields and invalid field-name inputs.

Syntax

S = rmfield(S, field)
S = rmfield(S, fields)
S = rmfield(S, field, ...)

Inputs

NameTypeRequiredDefaultDescription
SAnyYes—Input struct or struct array.
fieldStringScalarYes—Field name to remove.
fieldsAnyYes—String array or cell array of field names.
fieldStringScalarYes—First field name to remove.
more_fieldsAnyVariadic—Additional field names.

Returns

NameTypeDescription
SAnyUpdated struct or struct array.

Errors

IdentifierWhenMessage
RunMat:rmfield:NotEnoughInputsNo field-name arguments are supplied.rmfield: not enough input arguments
RunMat:rmfield:InvalidTargetFirst input is not a struct or struct array.rmfield: expected struct or struct array
RunMat:rmfield:FieldNameTypeField-name argument has unsupported type or non-scalar shape.rmfield: field names must be string scalars, character vectors, or single-element string arrays
RunMat:rmfield:FieldNameEmptyA field name is empty.rmfield: field names must be nonempty character vectors or strings
RunMat:rmfield:MissingFieldAt least one requested field does not exist on the input struct.Reference to non-existent field
RunMat:rmfield:StructArrayContentsStruct-array input contains non-struct elements.rmfield: expected struct array contents to be structs
RunMat:rmfield:RebuildFailedRebuilding the updated struct array failed.rmfield: failed to rebuild struct array

How rmfield works

  • Works with scalar structs and struct arrays created by struct, load, or other builtins.
  • Accepts character vectors, string scalars, string arrays, and cell arrays containing those types to identify the fields that should be removed.
  • Every listed field must already exist. Attempting to remove a missing field raises the standard MATLAB-style error Reference to non-existent field '<name>'.
  • Removing multiple fields applies to every element in a struct array; the operation fails if any element is missing one of the requested fields.
  • The input S is not mutated in place. rmfield returns a new struct (or struct array) while the original remains unchanged.
  • Retained fields preserve every nested integer class and exact payload structurally, including wide values, without conversion or provider access.

Does RunMat run rmfield on the GPU?

rmfield performs metadata updates on the host. Values that already reside on the GPU—such as gpuArray tensors stored in other fields—stay on the device. Because this builtin only rewrites struct metadata it does not require or invoke acceleration provider hooks.

GPU memory and residency

No additional residency management is required. rmfield leaves existing GPU tensors untouched and never gathers or uploads buffers. Subsequent GPU-aware builtins decide whether to keep values on the device.

Examples

Removing a single field from a scalar struct

s = struct("name", "Ada", "score", 42);
t = rmfield(s, "score");
isfield(t, "score")

Expected output:

ans =
  logical
   0

Removing several fields with a cell array of names

cfg = struct("mode", "fast", "rate", 60, "debug", true);
cfg = rmfield(cfg, {"rate", "debug"});
fieldnames(cfg)

Expected output:

ans =
  1×1 cell array
    {'mode'}

Removing a field from every element of a struct array

people = struct("name", {"Ada", "Grace"}, "id", {101, 102}, "email", {"ada@example.com", "grace@example.com"});
trimmed = rmfield(people, "email");
fieldnames(trimmed)

Expected output:

ans =
  2×1 cell array
    {'id'}
    {'name'}

Supplying a string array of field names to delete

stats = struct("mean", 10, "median", 9, "stdev", 2);
names = ["mean", "median"];
reduced = rmfield(stats, names);
fieldnames(reduced)

Expected output:

ans =
  1×1 cell array
    {'stdev'}

Conditionally removing optional fields

record = struct("id", 7, "notes", "draft");
if isfield(record, "notes")
    record = rmfield(record, "notes");
end
fieldnames(record)

Expected output:

ans =
  1×1 cell array
    {'id'}

Using rmfield with coding agents

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

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

FAQ

Does rmfield modify the input in place?⌄

No. The function returns a new struct (or struct array) with the specified fields removed. The input value remains unchanged, mirroring MATLAB's copy-on-write semantics.

What argument types can I use for the field names?⌄

You can pass character vectors, string scalars, string arrays, or cell arrays whose elements are strings or character vectors. Mixing these forms in a single call is supported—rmfield concatenates all supplied names into one list.

What happens if a field is missing?⌄

RunMat raises the MATLAB-compatible error Reference to non-existent field '<name>'. and leaves the struct unchanged.

Can I remove nested fields with rmfield?⌄

No. rmfield only removes top-level fields. Use setfield with nested assignments or restructure your data if you need to manipulate nested content.

Does rmfield work with MATLAB-style objects or handle classes?⌄

No. The builtin is restricted to structs and struct arrays. Use class-specific helpers (such as rmprop) for objects.

Does removing a field move GPU tensors back to the CPU?⌄

No. The builtin merely rewrites metadata. Any GPU-resident values stored in remaining fields stay on the device until another operation decides otherwise.

Related Structs functions

fieldnames · getfield · isfield · orderfields · setfield · struct · structfun

Open-source implementation

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

  • View the source for rmfield 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 rmfield works
  • Does RunMat run rmfield on the GPU?
  • GPU memory and residency
  • Examples
  • Removing a single field from a scalar struct
  • Removing several fields with a cell array of names
  • Removing a field from every element of a struct array
  • Supplying a string array of field names to delete
  • Conditionally removing optional fields
  • Using rmfield with coding agents
  • FAQ
  • Related Structs functions
  • Open-source implementation
  • About RunMat