matlabfieldrenamematlab-struct

How do I rename a field in a structure array in MATLAB?


Given a structure array, how do I rename a field? For example, given the following, how do I change "bar" to "baz".

clear
a(1).foo = 1;
a(1).bar = 'one';
a(2).foo = 2;
a(2).bar = 'two';
a(3).foo = 3;
a(3).bar = 'three';
disp(a)

What is the best method, where "best" is a balance of performance, clarity, and generality?


Solution

  • Expanding on this solution from Matthew, you can also use dynamic field names if the new and old field names are stored as strings:

    newName = 'baz';
    oldName = 'bar';
    [a.(newName)] = a.(oldName);
    a = rmfield(a,oldName);