MATLAB如何調(diào)用function? 一文看懂functionfunction函數(shù)的試用技巧

在 MATLAB 中,我們可以通過多種方式調(diào)用 function 函數(shù)。function函數(shù)是聲明函數(shù)名稱、輸入和輸出。
語法:
function [y1,...,yN] = myfun(x1,...,xM)
說明:
function [y1,...,yN] = myfun(x1,...,xM) 聲明名為 myfun 的函數(shù),該函數(shù)接受輸入 x1,...,xM 并返回輸出 y1,...,yN。此聲明語句必須是函數(shù)的第一個可執(zhí)行代碼行。有效的函數(shù)名稱以字母字符開頭,并且可以包含字母、數(shù)字或下劃線。
可以將函數(shù)保存在以下位置:
- 只包含函數(shù)定義的函數(shù)文件中。文件的名稱須與文件中第一個函數(shù)的名稱一致。
- 包含命令和函數(shù)定義的腳本文件中。函數(shù)必須位于該文件的末尾。腳本文件不能與文件中的函數(shù)具有相同的名稱。R2016b 或更高版本的腳本中支持函數(shù)。
文件可以包含多個局部函數(shù)或嵌套函數(shù)。為提高可讀性,可使用end關(guān)鍵字來表示文件中每個函數(shù)的末尾。以下情況下需要end關(guān)鍵字:
- 文件中有任意函數(shù)包含嵌套函數(shù)。
- 該函數(shù)是函數(shù)文件中的局部函數(shù),并且文件中有局部函數(shù)使用end關(guān)鍵字。
- 該函數(shù)是腳本文件內(nèi)的局部函數(shù)。
示例
包含一個輸出的函數(shù)
在名為 average.m 的文件中定義一個函數(shù),該函數(shù)接受一個輸入向量,計(jì)算各個值的平均值,然后返回單個結(jié)果。
function ave = average(x) ave = sum(x(:))/numel(x); end
從命令行調(diào)用該函數(shù)。
z = 1:99; ave = average(z) ave = 50
包含多個輸出的函數(shù)
在名為stat.m的文件中定義一個函數(shù),該函數(shù)返回輸入向量的均值和標(biāo)準(zhǔn)差。
function [m,s] = stat(x) n = length(x); m = sum(x)/n; s = sqrt(sum((x-m).^2/n)); end
從命令行調(diào)用該函數(shù)。
values = [12.7, 45.4, 98.9, 26.6, 53.1]; [ave,stdev] = stat(values) ave = 47.3400 stdev = 29.4124
腳本文件中的函數(shù)處的值,并計(jì)算曲線下方從 0 到
的面積。包括一個局部函數(shù),用于定義被積函數(shù)
。
注意:在腳本中包括函數(shù)需要安裝 MATLAB® R2016b 或更高版本。
% Compute the value of the integrand at 2*pi/3. x = 2*pi/3; y = myIntegrand(x) % Compute the area under the curve from 0 to pi. xmin = 0; xmax = pi; f = @myIntegrand; a = integral(f,xmin,xmax) function y = myIntegrand(x) y = sin(x).^3; end y = 0.6495 a = 1.3333
函數(shù)文件中的多個函數(shù)
在名為 stat2.m 的文件中定義兩個函數(shù),其中第一個函數(shù)調(diào)用第二個函數(shù)。
function [m,s] = stat2(x) n = length(x); m = avg(x,n); s = sqrt(sum((x-m).^2/n)); end function m = avg(x,n) m = sum(x)/n; end
函數(shù)avg是局部函數(shù)。局部函數(shù)僅可供同一文件中的其他函數(shù)使用。
從命令行調(diào)用函數(shù)stat2。
values = [12.7, 45.4, 98.9, 26.6, 53.1]; [ave,stdev] = stat2(values) ave = 47.3400 stdev = 29.4124
帶參數(shù)驗(yàn)證的函數(shù)
定義一個函數(shù),該函數(shù)將輸入限制為不包含 Inf 或 NaN 元素的數(shù)值向量。此函數(shù)使用 arguments 關(guān)鍵字,該關(guān)鍵字在 MATLAB® 版本 R2019b 及更高版本中為有效關(guān)鍵字。
function [m,s] = stat3(x) arguments x (1,:) {mustBeNumeric, mustBeFinite} end n = length(x); m = avg(x,n); s = sqrt(sum((x-m).^2/n)); end function m = avg(x,n) m = sum(x)/n; end
在arguments代碼塊中,(1,:)表示x必須為向量。驗(yàn)證函數(shù){mustBeNumeric, mustBeFinite}將x中的元素限制為非Inf或NaN的數(shù)值??梢詤⒖己瘮?shù)參數(shù)驗(yàn)證。
如果調(diào)用函數(shù)時所帶的向量包含NaN元素,則違反了輸入?yún)?shù)聲明。此違規(guī)會導(dǎo)致mustBeFinite驗(yàn)證函數(shù)引發(fā)錯誤。
values = [12.7, 45.4, 98.9, NaN, 53.1]; [ave,stdev] = stat3(values) Invalid input argument at position 1. Value must be finite.
相關(guān)文章
matlab提示內(nèi)存不足怎么辦? MATLAB內(nèi)存不足及MAT文件版本過低解決方案
Matlab作為一款科學(xué)計(jì)算軟件,其內(nèi)存管理變得尤為重要,當(dāng)遇到“內(nèi)存不足”的錯誤提示時,許多用戶可能會感到困擾,下面我們就來看看詳細(xì)解決辦法2025-01-10- 很多小伙伴還不了解matlab怎么生成圖像,其實(shí)很簡單的我們只要準(zhǔn)備好的圖像復(fù)制到matlab的工作目錄中,然后入返回指令[data=imread在主界面將圖像轉(zhuǎn)換為數(shù)據(jù)就可以了,詳2024-01-20
matlab怎么刪除某一行錯誤代碼 matlab把錯誤行刪掉的技巧
用戶在使用matlab時多打一行代碼或者出現(xiàn)一行錯誤的代碼要怎么刪除,其實(shí)只要選中要刪除的代碼直接注釋或者delete刪除即可,詳細(xì)請看下文介紹2024-01-20- 很多用戶在不需要用到matlab這個軟件之后,想把它給卸載掉,但是不知道怎么卸載,不會操作,要想把這個軟件卸載干凈,可以直接到控制面板中把它卸載,詳細(xì)請看下文介紹2024-01-20
matlab怎么將數(shù)據(jù)從大到小排序? matlab正序或倒敘數(shù)據(jù)排序的技巧
matlab怎么將數(shù)據(jù)從大到小排序?matlab中的數(shù)據(jù)想要排序,該怎么從大到小排序,或者從小到大排序呢?下面我們就來看看matlab正序或倒敘數(shù)據(jù)排序的技巧2023-10-26matlab積分函數(shù)怎么寫? matlab求積分的教程
matlab積分函數(shù)怎么寫?matlab中想要求積分,該怎么操作呢?下面我們就來看看matlab求積分的教程2023-10-26matlab中for循環(huán)怎么用? MATLAB里for函數(shù)依次讀取的用法
matlab中for循環(huán)怎么用?matlab中想要使用for循環(huán)函數(shù),該怎么操作呢?下面我們就來看看MATLAB里for函數(shù)依次讀取的用法2023-10-26- Matlab常用快捷鍵有哪些?我們今天來看看一些常用的Matlab快捷操作命令掌握這些操作可以極大地提高使用Matlab時的效率,詳細(xì)請看下文介紹2023-10-26
matlab中function函數(shù)怎么使用? matlabfunction函數(shù)的用法
matlab中function函數(shù)怎么使用?matlab中有很多函數(shù),該怎么用呢?下面我們就來看看matlabfunction函數(shù)的用法2023-10-26MATLAB R2015b代碼怎么自動高亮? MATLAB開啟高亮顯示當(dāng)前行技巧
MATLAB R2015b代碼怎么自動高亮?MATLAB R2015b編輯代碼的時候,想要開啟當(dāng)前行代碼高亮顯示,該怎么操作呢?下面我們就來看看MATLAB開啟高亮顯示當(dāng)前行技巧2023-07-11