x 構造匿名函式 MATLAB函式

2021-10-03 18:49:17 字數 1303 閱讀 6553

@是用於定義函式控制代碼的操作符。函式控制代碼既是一種變數,可以用於傳參和賦值;也是可以當做函式名一樣使用。

舉例:sin是matlab中的乙個函式,但sin只是函式名,還不是函式控制代碼,不可以用於傳參。

f = @sin;

% 這行**定義了乙個函式控制代碼,變數名是f。這樣就可以當做引數傳遞了(這就是上面**中的意義所在),而且還可以跟sin函式按相同的語法規則使用:

g = f;

% g也是函式控制代碼,其「值」和f一樣,都代表sin函式

y =g

(pi)

;%可以得到y=

0

function obj =

rastrigin

(var,m,opt)

%rastrigin function

%- var: design variable vector 決策變數向量

%- m: rotation matrix 旋轉矩陣

%- opt: shift vector 偏移向量

dim =

length

(var)

; var =

(m*(var-opt)

')';

% 將決策空間變數減去偏移量後乘以旋轉矩陣

obj =

10*dim;

% 由於每個維度都要加上10的數值,所以這裡直接由把這一項提取出來

for i=

1:dim

obj=obj+

(var

(i)^2-

10*(cos(2

*pi*

var(i)))

);end

end

- 但是在主函式中,我們將rastrigin函式作為乙個 **每次只需改變變數x的函式,而並不需要每次都改變m和opt** 並且成為乙個結構體的乙個函式成分。

- 只有變數x的匿名函式

% rastrigin function definition

n=40

;tasks(1

).dims=n;

m=orth

(randn

(n,n));

% 將隨機向量求標準正交基

tasks(1

).fnc=@(x)

rastrigin

(x,m)

;% x作為決策變數,m作為旋轉矩陣,沒有偏移向量

@(x)表示匿名函式的變數只有x,匿名函式的函式體部分則是rastrigin(x,m),由此重構了函式

Matlab中 的 x 處理匿名函式

x 處理匿名函式 匿名函式 提供了建立簡單函式的快速方法,無需每次都建立.m檔案。可以使用以下語法構造乙個匿名函式和該函式的控制代碼 fhandle arglist body 其中,fhandle為函式控制代碼,是定義控制代碼的運算子,代表此函式為匿名函式,body定義函式的主體,arglist是傳...

MATLAB匿名函式

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...

matlab匿名函式

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