Implementando funções de encadeamento 'curly' e 'access' no matlab

Eu liEste artigo no blog mathworks sobre programação funcional no matlab, e duas das funções auxiliares foram:

paren = @(x, varargin) x(varargin{:});
curly = @(x, varargin) x{varargin{:}};

O terceiro óbvio para completar o trio (e de acordo com o tema de cinco letras) seria:

acces = @(x, field) x.(field);

Colocando de lado a discussão sobre se é uma boa idéia implementar o encadeamento dessa maneira ou não no matlab (nota: oitava suporta encadeamento por padrão),paren parece funcionar bem, como esperado; Contudo,curly eacces tem uma grande desvantagem; considere o seguinte código:

>> C = {1,2,3,4; 2,3,4,5; 3,4,5,6; 4,5,6,7};
>> A = [curly(C, 3, ':')]
A =
     3

ou seja, o esperadoseqüência geração não aconteceu.
(observe que esse código funciona conforme o esperado na oitava, ou seja,A = [3,4,5,6] )

Igualmente,acces não produz uma sequência no matlab

>> S = [struct('name', 'john'), struct('name', 'jim')];
>> A = {acces(S, 'name')}
A = 
    'john'

(enquanto Octave produz o esperadoA = {'john', 'jim'} )

Entendo que a diferença é provavelmente mais uma questão de implementação em termos deuma. como as funções retornam coisas no matlab x oitava e / oub. como as seqüências são geradas a partir de células e estruturas nos dois idiomas.

No entanto, existe uma maneira programática de fazer com que o matlab execute a operação pretendida acima?
Em outras palavras, existe uma maneira de definircurly eacces funções que retornam uma sequência (bônus extra para função anônima: p) como a oitava faz?

PS. A resposta que estou procurando não é a trivial"para obter vários argumentos, use varargout" 1.
PS2.Eu testei isso no Matlab 2013b, por isso não sei se esse comportamento foi "corrigido" em versões posteriores (embora eu duvide muito). Testado no mais recente matlab online emhttp://matlab.mathworks.com