Вы можете свернуть свою собственную функцию, которая применяет функции к полям объекта, аналогично structfun
.
function out = objfieldfun(x, fcn)
%OBJFIELDFUN Apply a function to every field of an object
out = x;
fields = fieldnames(x);
for iX = 1:numel(x)
for iField = 1:numel(fields)
out(iX).(fields{iField}) = feval(fcn, x(iX).(fields{iField}));
end
end
Тогда вы можете использовать это так.
d = direction;
d2 = objfieldfun(d, @(x)x+2);
Но ... обычно именованные свойства объектов имеют определенные значения и роли, и было бы необычно применять одну и ту же операцию ко всем полям. Возможно, более разумно было бы хранить подобные свойства внутри структуры, которая сама находится в поле объекта.