@是用於定義函式控制代碼的操作符。函式控制代碼既是一種變數,可以用於傳參和賦值;也是可以當做函式名一樣使用。
舉例: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 是...