Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to overload user defined functions in Matlab?

Tags:

matlab

I am trying to plot sequences, I have written a function

function show_seq(seq)
 plot (seq)
end

I now want to overload this show_seq to show 2 sequences something like

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

but this does not work, does anyone have idea about how to overload functions in MATLAB?

like image 562
user425194 Avatar asked Aug 27 '11 22:08

user425194


1 Answers

You can overload one of your own functions if you put the overloading function in a path that with higher precedence. For more details on path precedence, see this question.

However, in your case, the easiest would be to modify show_seq so that it accepts multiple optional inputs:

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
like image 165
Jonas Avatar answered Oct 14 '22 07:10

Jonas