The following code behaves rather unexpectedly to me:
r .ab = 'cd';
try assert (r .([ 'a'; 'b' ]))
assert (all (e .identifier == 'MATLAB:nonExistentField'))
assert (all (r .([ 'ax'; 'bx' ]) == 'cd'));
It seems that MATLAB considers only (fieldname (:, 1)), except when there is only one column, in which case it considers only (fieldname (1)). All this is undocumented. Isn’t that weird? I would expect MATLAB to error out with 'mustBeFieldName' in both cases instead.