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
nameargument. - Returns a scalar logical (
true/false) whennameis a single string or char vector. - Returns a logical array that matches the size of
namewhen 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 offalsevalues) without raising an error. - Empty struct arrays yield
falsefor 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
1Testing 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 0Inspecting 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 0Using isfield before accessing optional configuration fields
cfg = struct("mode", "fast");
if ~isfield(cfg, "rate")
cfg.rate = 60;
endMixing 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
0FAQ
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.
Related functions to explore
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.
- View isfield.rs on GitHub
- Learn how the 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 — 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.