2011-08-27 35 views
7

我想要绘制序列,我写了一个函数如何在Matlab中重载用户定义的函数?

function show_seq(seq) 
plot (seq) 
end 

我现在想重载此show_seq显示2个序列类似

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

但这不工作,没有任何人有有关如何在MATLAB中重载函数的想法?

+0

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

回答

10

如果将重载函数放在优先级较高的路径中,则可以重载自己的某个函数。有关路径优先级的更多详细信息,请参阅this question

然而,在你的情况下,最简单的是修改show_seq,使其接受多个可选输入:

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

耶稣,所以你不能把这两个重载放在一个文件中,就像你在我到目前为止所遇到的其他语言中所做的那样? – Grzenio

+2

@Grzenio:没有技巧,你确实不能把多个独立的功能放在一个文件中。但是,您是否真的认为将不同签名的大部分函数复制粘贴多次会更简单更高效,而不是编写一个可以处理多个签名的函数? – Jonas

+15

在正常的编程语言中,通常会创建一个包含实际实现的所有可能参数的函数,以及一些带有更多专用参数集的函数,这些函数只是调整参数,提供一些默认值等,并用实现来调用函数。复制粘贴的主要内容是,函数名称...... – Grzenio

相关问题