MATLAB匿名函式

2021-08-08 12:07:01 字數 2013 閱讀 1200

fhandle=@(arglist)expr
其中,expr是具體的函式表示式,arglist是指定的函式自變數。具體請見下面示例

f=@(x)x.^2;

>> fx=f(1:10)

fx =

1 4 9 16 25 36 49 64 81 100

>> g=@(x,y)x.^2+y.^2;

>> gxy=g(1:10,2:11)

gxy =

5 13 25 41 61 85 113 145 181 221

1. 單變數匿名函式

單變數匿名函式是最簡單的匿名函式,只含有乙個自變數

f=@(x)x.^2
就是單變數匿名函式,除此以外,含有引數,引數值已知的單個自變數的匿名函式也是單匿名函式,譬如

>> f(1:5)

ans =30 40 50 60 70

2. 多變數匿名函式

多變數函式匿名含有兩個或兩個以上的自變數,如

g=@(x,y)x.

^2+y.

^2;

同單變數匿名函式一樣,多變數函式也可以有已知的引數值。譬如

a=1;b=2;

g=@(x,y)a*x+y.^b;

g(1:5,1:5)

ans =

2 6 12 20 30

3. 單重匿名函式

到目前為止,上面列的匿名函式,無論是單變數匿名函式還是多變數匿名函式,都屬於單重匿名函式。單重匿名函式的特點是:只有乙個「@」符號引導,「@」符號只會就是具體的函式表達數。自變數輸入單重匿名函式後,得到的是具體的數值。除了單重匿名函式以外,還有二重、乃至多重匿名函式。這些多重匿名函式在引數傳遞方面非常方便。

4. 多重匿名函式

下面以二重函式為例來介紹多重匿名函式。

f=@(a,b)@(x)a*x+b;
其中「a,b」是外層變數,「x」是內層變數。可以這樣理解這個表示式:每個「@」符號後面的括號的變數的作用域一直到表示式的結尾。這樣,「a,b」的作用域就是「@(x)a*x+b」,「x」的作用域就是「a*x+b」。因此,對於給定的「a,b」,「gab=f(a,b)」是乙個單層以x為變數的單變數匿名函式。

可以利用functions函式觀察建立的匿名函式資訊,以下

f=@(a,b)@(x)a*x+b

f = 包含以下值的 function_handle:

@(a,b)@(x)a*x+b

>> f23=f(2,3)

f23 =

包含以下值的 function_handle:

@(x)a*x+b

>> f23info=functions(f23)

f23info =

包含以下欄位的 struct:

function: '@(x)a*x+b'

type: 'anonymous'

file: 'd:\工作資料夾\匿名函式\anonymous3.m'

workspace:

within_file_path: 'anonymous3'

>> f23info.workspace

ans =

包含以下欄位的 struct:

a: 2

b: 3

>> f=@(a)@(b,c)@(x)x^a+b*c

f = 包含以下值的 function_handle:

@(a)@(b,c)@(x)x^a+b*c

兩重以上的匿名函式的各變數的作用域可以參考二重匿名函式。

matlab匿名函式

匿名函式 匿名函式 什麼是匿名函式?匿名函式是不儲存在程式檔案中 但與資料型別是 function handle 的變數相關的函式。匿名函式可以接受輸入並返回輸出,就像標準函式一樣。但是,它們可能只包含乙個可執行語句。例如,建立用於計算平方數的匿名函式的控制代碼 sqr x x.2 變數 sqr 是...

Matlab匿名函式

matlab可以通過function去定義一些功能函式,這使得 變得簡潔和高效。但是如果遇到的是一些簡單的數學公式組成的函式表示式,繼續用function去定義函式,似乎顯得有些冗雜和多餘。這時候,就可以嘗試運用匿名函式了。handle arglist anonymous function其中han...

x 構造匿名函式 MATLAB函式

是用於定義函式控制代碼的操作符。函式控制代碼既是一種變數,可以用於傳參和賦值 也是可以當做函式名一樣使用。舉例 sin是matlab中的乙個函式,但sin只是函式名,還不是函式控制代碼,不可以用於傳參。f sin 這行 定義了乙個函式控制代碼,變數名是f。這樣就可以當做引數傳遞了 這就是上面 中的意...