MATLAB學習筆記—多型函式
多型函式(Polymorphic functions)
什麼是多型?
是指函式可以根據輸入輸出的表示式個數和型別作出不同的反應。
舉個例子:zeros(5,6)
生成5×6矩陣,zeros(4)
生成4×4的矩陣。
MATLAB中許多內建的函式是多型的(sqrt, max, size, plot, etc.)
如何使自己的函式具有多型性?
nargin: 返回實際的輸入引數的個數
nargout: 返回實際要求的輸出引數個數
下面這個函式multable(n,m)
生成n×m的數陣,我們來使其具有多型性
function [table summa] = multable(n,m)
if nargin < 2
m = n;
end
table = (1:n)' * (1:m);
if nargout == 2
summa = sum(table(:));
end
[table s] = multable(3,4)
,會輸出3×4的數表和其所有元素和
table = multable(5)
,只會輸出5×5數表
健壯性(Robustness)
一個健壯的函式,會對各種可能出現錯誤的情況進行處理。上面的函式可以進行如下的優化:
function [table summa] = multable(n,m)
% MULTABLE muliplication table.
% T = MULTABLE(N) return an N-by-N matrix
% containing the multiplication table for
% the integers 1 through N.
% MULTABLE(N,M) returns an N-by-M matrix.
% Both input arguments must be positive integers.
% [T SM] = MULTABEL(...) returns the matrix
% containing the multiplication table in T
% and the sum of all its elements in SM
if nargin < 1 %沒有輸入
error('must have at least one input argument');
end
if nargin < 2
m = n;
elseif ~isscalar(m) || m < 1 || m ~= fix(m) %引數不為正整數
error('m needs to be a positive integer');
end
if ~isscalar(n) || n < 1 || n ~= fix(n)
error('n needs to be a positive integer');
end
table = (1:n)' * (1:m);
if nargout == 2
summa = sum(table(:));
end
%後為註釋,在命令列中輸入help multable
,可以得到最上面一大段註釋作為help的內容
持續變數(Persistent variables)
和全域性變數類似,但又有所區別。
function total = accumulate(n)
persitent summa;
if isempty(summa)
summa = n;
else
summa = summa + n;
end
total = summa;
也就是說,再次呼叫這個函式的時候,summa的值是接著上次的值的。
重置:clear accumulate
©Fing
相關文章
- Matlab學習筆記(1)——imshow函式的使用Matlab筆記函式
- Swift學習筆記(三十四)——函式型別Swift筆記函式型別
- TypeScript 學習筆記 — 函式中的型別(四)TypeScript筆記函式型別
- async函式學習筆記。函式筆記
- Go 函式 學習筆記Go函式筆記
- 分析函式(學習筆記)函式筆記
- 生成函式 學習筆記函式筆記
- 多項式學習筆記筆記
- TS學習筆記(四):函式筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- Golang學習筆記-1.6 函式Golang筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- LoadRunner函式學習筆記函式筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- Matlab學習筆記(一)Matlab筆記
- python學習筆記(六)——函式Python筆記函式
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- C++學習筆記(二)——函式C++筆記函式
- c語言學習筆記===函式C語言筆記函式
- 【C#學習筆記】函式呼叫C#筆記函式
- oracle學習筆記8: 分析函式Oracle筆記函式
- 學習筆記-----一時間函式筆記函式
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- 【Java學習筆記】繼承和多型Java筆記繼承多型
- 語音學習筆記3------matlab實現傅立葉反變換ifft()函式筆記MatlabFFT函式
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- pandas之常用基本函式學習筆記函式筆記
- 【C#學習筆記】函式過載C#筆記函式
- Erlang學習筆記(四)模組與函式筆記函式
- c++學習筆記 -- 建構函式C++筆記函式
- MYSQL學習筆記15: 數值函式MySql筆記函式
- 工作學習筆記(三)to_char函式筆記函式