2011-08-27 39 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

相關問題