¿Por qué MATLAB lanza un error de "demasiados argumentos de salida" cuando sobrecargo el subref (referencia de subíndice)?

Como unejemplo de jugueteTengo una clase que simplemente ajusta un vector o una matriz en un objeto e incluye una marca de tiempo de cuando se creó. Estoy tratando de sobrecargarsubsref así que eso

() Las referencias funcionan exactamente como lo hacen con los tipos de vectores y matrices estándar{} trabajos de referencia enexactamente de la misma manera que() referenciación (nada que ver con las células en otras palabras). La referenciación me permite acceder a laprivado Propiedades del objeto y otros campos que no son técnicamente propiedades.

Código:

classdef TimeStampValue

    properties (Access = private)
        time;
        values;
    end

    methods
        %% Constructor
        function x = TimeStampValue(values)
            x.time = now();
            x.values = values;
        end

        %% Subscripted reference
        function x = subsref(B, S)
            switch S.type
                case '()'
                    v = builtin('subsref', B.values, S);
                    x = TimeStampValue(v);
                case '{}'
                    S.type = '()';
                    v = builtin('subsref', B.values, S);
                    x = TimeStampValue(v);
                case '.'
                    switch S.subs
                        case 'time'
                            x = B.time;
                        case 'values'
                            x = B.values;
                        case 'datestr'
                            x = datestr(B.time);
                    end
            end
        end

        function disp(x)
            fprintf('\t%d\n', x.time)
            disp(x.values)
        end   

    end

end

Sin embargo brace{} referenciar no funciona. Yo corro este codigo

clear all
x = TimeStampValue(magic(3));
x{1:2}

y me sale este error:

Error using TimeStampValue/subsref
Too many output arguments.
Error in main (line 3)
x{1:2} 

MException.last me da esta información:

identifier: 'MATLAB:maxlhs'
   message: 'Too many output arguments.'
     cause: {0x1 cell}
     stack: [1x1 struct]

lo cual no es útil porque lo único en la pila de excepciones es el archivo que contiene tres líneas de código que ejecuté anteriormente.

Puse un punto de interrupción en la primera línea de la instrucción switch ensubsref pero MATLAB nunca lo alcanza.

¿Cuál es el trato aquí? Ambos() y. Haciendo referencia al trabajo como usted esperaría, entonces ¿por qué no{} haciendo referencia al trabajo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta