¿Cómo creo una matriz de objetos de clase abstracta en MATLAB?

Como ejemplo, supongamos que he creado una clase abstracta llamadaShape y dos subclases llamadasCircle yRectangle que ambos implementen un método (abstracto) llamadoDraw. Me gustaría poder crear una serie deCircle yRectangle objetos, almacenarlos en una matriz y llamarDraw en cada objeto de matriz mediante la iteración a través de la matriz.

He intentado algo como lo siguiente:

Shape.m:

classdef (Abstract) Shape < handle

    methods (Abstract)
        Draw(obj);
    end

end

Círculo.m:

classdef Circle < Shape

    methods
        function obj = Draw(obj)
            disp('This is a circle');
        end
    end

end

Rectángulo.m:

classdef Rectangle < Shape

    methods
        function obj = Draw(obj)
            disp('This is a rectangle');
        end
    end

end

test.m:

shapes = Shape.empty();

myrect = Rectangle();
mycirc = Circle();

shapes(end + 1) = myrect;
shapes(end + 1) = mycirc;

for i = 1:size(shapes,1)
    shapes(i).Draw();
end

Cuando intento ejecutar test.m, aparece el siguiente mensaje de error:

Error using Shape.empty
Abstract classes cannot be instantiated.
Class 'Shape' defines abstract methods
and/or properties.

Error in test (line 1)
shapes = Shape.empty();

Respuestas a la pregunta(2)

Su respuesta a la pregunta