function v = getfield_or(s, path, default)
%GETFIELD_OR  Legge un campo annidato da una struct, con valore di default.
%   v = getfield_or(s, {'campo1','campo2'}, default)
%   Ritorna s.campo1.campo2 se esiste, altrimenti default.
    v = default;
    cur = s;
    for k = 1:numel(path)
        if isstruct(cur) && isfield(cur, path{k})
            cur = cur.(path{k});
        else
            return;
        end
    end
    v = cur;
end