2011-08-27 20 views
7

Estoy tratando de trazar secuencias, he escrito una función¿Cómo sobrecargar las funciones definidas por el usuario en Matlab?

function show_seq(seq) 
plot (seq) 
end 

ahora quiero sobrecargar esta show_seq para mostrar 2 secuencias algo así como

function show_seq(seq1, seq2) 
    plot(seq1,'color','r'); 
    plot(seq2, 'color', 'b'); 
end 

pero esto no funciona, ¿alguien tiene idea de cómo sobrecargar las funciones en MATLAB?

+0

relacionadas: http://stackoverflow.com/questions/8630889/overloading-functions/8631335 # 8631335 –

Respuesta

10

Puede sobrecargar una de sus funciones si coloca la función de sobrecarga en una ruta que tenga una mayor prioridad. Para obtener más detalles sobre la precedencia de ruta, vea this question.

Sin embargo, en su caso, la más fácil sería modificar show_seq para que acepte múltiples entradas opcionales:

function show_seq(varargin) 
    hold on %# make sure subsequent plots don't overwrite the figure 
    colors = 'rb'; %# define more colors here, 
       %# or use distingushable_colors from the 
       %# file exchange, if you want to plot more than two 

    %# loop through the inputs and plot 
    for iArg = 1:nargin 
     plot(varargin{iArg},'color',colors(iArg)); 
    end 
end 
+21

Jesús, ¿entonces no puedes simplemente poner estas dos sobrecargas en un archivo como lo harías en cualquier otro idioma que haya encontrado hasta ahora? – Grzenio

+2

@Grzenio: sin trucos, de hecho no puede poner múltiples funciones independientes en un solo archivo. Sin embargo, ¿realmente crees que es más fácil y más eficiente copiar y pegar la mayor parte de la función varias veces para firmas diferentes, en lugar de escribir una función que pueda manejar múltiples firmas? – Jonas

+15

En los lenguajes de programación normales, normalmente creará una función con todos los parámetros posibles con la implementación real, y algunas funciones con un conjunto más especializado de parámetros, que solo adaptan los parámetros, proporcionan algunos valores predeterminados, etc. y llaman a la función con implementación . Lo principal de copiar y pegar es, bueno, el nombre de la función ... – Grzenio

Cuestiones relacionadas