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筆記函式
- TypeScript 學習筆記 — 函式中的型別(四)TypeScript筆記函式型別
- async函式學習筆記。函式筆記
- 生成函式 學習筆記函式筆記
- 多項式學習筆記筆記
- Matlab學習筆記(一)Matlab筆記
- Golang學習筆記-1.6 函式Golang筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- MYSQL學習筆記14: 函式MySql筆記函式
- python學習筆記(六)——函式Python筆記函式
- TS學習筆記(四):函式筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- C++學習筆記(二)——函式C++筆記函式
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- c語言學習筆記===函式C語言筆記函式
- [MatLab]學習筆記2:MatLab數值資料Matlab筆記
- matlab學習筆記一:安裝Matlab筆記
- MYSQL學習筆記15: 數值函式MySql筆記函式
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- 工作學習筆記(三)to_char函式筆記函式
- pandas之常用基本函式學習筆記函式筆記
- 莫比烏斯函式 - 學習筆記函式筆記
- ES6學習筆記(三)【函式,物件】筆記函式物件
- Solidity語言學習筆記————28、純函式Solid筆記函式
- Solidity語言學習筆記————26、回退函式Solid筆記函式
- Python學習筆記_函式_匯入模組Python筆記函式
- python程式設計學習筆記⑦-1函式Python程式設計筆記函式
- day10學習筆記之函式上筆記函式
- PHP 第十五週函式學習筆記PHP函式筆記
- 好程式設計師學習筆記:函式程式設計師筆記函式
- JavaScript學習筆記(二)——函式和陣列JavaScript筆記函式陣列
- hive學習筆記之七:內建函式Hive筆記函式