RunMat
GitHub

isfield — Test whether a struct or struct array defines specific field names.

tf = isfield(S, name) returns a logical value that indicates whether the struct S defines the field name. When name is a string array or a cell array of names, isfield returns a logical array with the same size, reporting the result for each requested field.

How isfield works in RunMat

  • Works with scalar structs and struct arrays created with struct, load, or similar builtins.
  • Accepts character vectors, string scalars, string arrays, or cell arrays containing character vectors and/or string scalars for the name argument.
  • Returns a scalar logical (true/false) when name is a single string or char vector.
  • Returns a logical array that matches the size of name when it is a string array or cell array.
  • If the first argument is not a struct or struct array, the result is false (or a logical array of false values) without raising an error.
  • Empty struct arrays yield false for every queried name because they do not carry field metadata once the elements have been removed.

How isfield runs on the GPU

isfield performs metadata checks entirely on the host. It never gathers or copies GPU tensors that may be stored inside the struct; it only inspects the host-side descriptors that record field names. No acceleration provider hooks are required.

GPU memory and residency

isfield is metadata-only. It neither moves nor inspects the contents of GPU tensors that might live inside the struct. You do not need to call gpuArray or gather to use the builtin; residency is preserved automatically.

Examples

Checking whether a struct defines a single field

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

Expected output:

hasScore =
  logical
   1

Testing multiple field names at once

s = struct("name", "Ada", "score", 42);
names = {"name", "department"; "score", "email"};
mask = isfield(s, names)

Expected output:

mask =
  2×2 logical array
     1     0
     1     0

Inspecting a struct array that shares a common schema

people = struct("name", {"Ada", "Grace"}, "id", {101, 102});
idxMask = isfield(people, ["id", "department"])

Expected output:

idxMask =
  1×2 logical array
     1     0

Using isfield before accessing optional configuration fields

cfg = struct("mode", "fast");
if ~isfield(cfg, "rate")
    cfg.rate = 60;
end

Mixing string scalars and character vectors in a cell array

opts = struct("Solver", "cg", "MaxIter", 200);
queries = {"Solver", "Tolerances"; "MaxIter", "History"};
present = isfield(opts, queries)

Behaviour when the input is not a struct

value = 42;
tf = isfield(value, "anything")

Expected output:

tf =
  logical
   0

FAQ

What argument types does isfield accept for field names?

Character vectors, string scalars, string arrays, and cell arrays that contain character vectors or string scalars. Passing other types raises an error.

Does isfield error when the first input is not a struct?

No. It returns false (or a logical array of false) to mirror MATLAB's behaviour. Use isstruct if you need to guard against non-struct inputs before calling isfield.

How do struct arrays affect the result?

Every element of the struct array must contain the queried field. If any element is missing the field, the result is false for that name.

What happens with empty struct arrays?

Empty struct arrays do not retain field metadata in RunMat yet, so isfield returns false for all queries. This matches MATLAB when the struct has no defined fields.

Are field name comparisons case-sensitive?

Yes. Field names are compared using exact, case-sensitive matches, just like MATLAB.

Does isfield gather GPU data?

No. The builtin only inspects field metadata and leaves GPU-resident tensors untouched.

These functions work well alongside isfield. Each page has runnable examples you can try in the browser.

fieldnames, struct, getfield, setfield, orderfields, rmfield

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how isfield 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 — free, no sign-up

Start running MATLAB code immediately in your browser.