大家應該都知道C++和Java編程能夠實現函數的重載,而當我們使用Matlab的一些函數,如:plot函數,可以發現該函數可以有不同的輸入,如:plot(data)、plot(t,data)和plot(X,Y,'LineWidth',2)等。這些就是matlab函數重載的應用。
下面我就通過一個簡單的輸出輸入數中的最大數的函數fun()來說明Matlab在編輯函數時如何實現重載。
方法/步驟:
1.首先打開Matlab(本人使用的是Matlab 2015a,使用其他版本的Matlab影響不大)。在Common Window里輸入edit fun(fun可改為任意字符,只為演示用),打開M文件編輯器,此時已創建M文件,文件名為fun。
2.在編輯器內輸入 function y=fun(varargin),varargin是Matlab內部變量,類型為元胞數組,如果改為其他變量則會報錯。
3.添加代碼 narginchk(2,3); 保證輸入量的個數,當個數小于2或大于3時程序會報錯。
4.Matlab內部有一個nargin變量用于存儲函數中輸入量的個數。下面用If語句來實現函數的重載。
輸入
if nargin==2
a=varargin{1};
b=varargin{2};
y=max([a,b]);
...
通過這段代碼,函數可實現輸入兩個量時的功能。
其中用a來存放輸入量的第一個量,用b來存放輸入量的第二個量。max()函數返回輸入矩陣的最大元素。
5.再輸入
elseif nargin==3
a=varargin{1};
b=varargin{2};
c=varargin{3};
y=max([a,b,c]);
end
通過這段代碼,函數可實現輸入兩個量時的功能。
其中用a來存放輸入量的第一個量,用b來存放輸入量的第二個量,用c來存放輸入量的第三個量。
效果如下圖
6.保存之后,下面對所編輯的函數進行驗證。
Command Window 中分別輸入
answer1=fun(12,13,14)
answer2=fun(16,25)
answer3=fun(16)
answer4=fun(12,13,14,15)
結果如下圖
7.準確的講,matlab函數的重載并不是嚴格意義上的函數重載,但是通過對變量的合理運用,能夠實現重載的功能。
希望這一條經驗能夠幫助到大家!
注意事項
編輯函數是輸入變量一定得是varargin,否則Matlab會將輸入變量視為一個。
if語句一定要加end
新聞熱點
疑難解答