大家應(yīng)該都知道C++和Java編程能夠?qū)崿F(xiàn)函數(shù)的重載,而當(dāng)我們使用Matlab的一些函數(shù),如:plot函數(shù),可以發(fā)現(xiàn)該函數(shù)可以有不同的輸入,如:plot(data)、plot(t,data)和plot(X,Y,'LineWidth',2)等。這些就是matlab函數(shù)重載的應(yīng)用。
下面我就通過一個(gè)簡(jiǎn)單的輸出輸入數(shù)中的最大數(shù)的函數(shù)fun()來說明Matlab在編輯函數(shù)時(shí)如何實(shí)現(xiàn)重載。

方法/步驟:
1.首先打開Matlab(本人使用的是Matlab 2015a,使用其他版本的Matlab影響不大)。在Common Window里輸入edit fun(fun可改為任意字符,只為演示用),打開M文件編輯器,此時(shí)已創(chuàng)建M文件,文件名為fun。

2.在編輯器內(nèi)輸入 function y=fun(varargin),varargin是Matlab內(nèi)部變量,類型為元胞數(shù)組,如果改為其他變量則會(huì)報(bào)錯(cuò)。

3.添加代碼 narginchk(2,3); 保證輸入量的個(gè)數(shù),當(dāng)個(gè)數(shù)小于2或大于3時(shí)程序會(huì)報(bào)錯(cuò)。

4.Matlab內(nèi)部有一個(gè)nargin變量用于存儲(chǔ)函數(shù)中輸入量的個(gè)數(shù)。下面用If語句來實(shí)現(xiàn)函數(shù)的重載。
輸入
if nargin==2
a=varargin{1};
b=varargin{2};
y=max([a,b]);
...
通過這段代碼,函數(shù)可實(shí)現(xiàn)輸入兩個(gè)量時(shí)的功能。
其中用a來存放輸入量的第一個(gè)量,用b來存放輸入量的第二個(gè)量。max()函數(shù)返回輸入矩陣的最大元素。
5.再輸入
elseif nargin==3
a=varargin{1};
b=varargin{2};
c=varargin{3};
y=max([a,b,c]);
end
通過這段代碼,函數(shù)可實(shí)現(xiàn)輸入兩個(gè)量時(shí)的功能。
其中用a來存放輸入量的第一個(gè)量,用b來存放輸入量的第二個(gè)量,用c來存放輸入量的第三個(gè)量。
效果如下圖

6.保存之后,下面對(duì)所編輯的函數(shù)進(jìn)行驗(yàn)證。
Command Window 中分別輸入
answer1=fun(12,13,14)
answer2=fun(16,25)
answer3=fun(16)
answer4=fun(12,13,14,15)
結(jié)果如下圖

7.準(zhǔn)確的講,matlab函數(shù)的重載并不是嚴(yán)格意義上的函數(shù)重載,但是通過對(duì)變量的合理運(yùn)用,能夠?qū)崿F(xiàn)重載的功能。
希望這一條經(jīng)驗(yàn)?zāi)軌驇椭酱蠹遥?/p>
注意事項(xiàng)
編輯函數(shù)是輸入變量一定得是varargin,否則Matlab會(huì)將輸入變量視為一個(gè)。
if語句一定要加end
新聞熱點(diǎn)
疑難解答
圖片精選