欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

  發(fā)布時間:2025-01-10 17:21:28   作者:佚名   我要評論
MATLAB的functions函數(shù),用于查詢和調(diào)試函數(shù)句柄信息,該怎么了解并使用這個函數(shù)呢?詳細(xì)請看下文介紹

在 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)文章

最新評論