標籤:

(新手提問)matlab中@的含義?

我在command window裡面使用函數x=fminimax(fun,rand(2,1))時運行不出來,必須在fun前加上@才行。【fun為M文件定義的一個普通二元一次函數】

之前也在百度裡面看到了一些解釋說@如同c語音中的指針一般,但本人仍不理解改何時使用

望大牛解答,不甚感激


當你需要把一個函數當做參數傳給另一個函數的時候,可以在前者前面加at或者把前者用單引號括起來。

就好像你在知乎上提到別人,要在別人的名字前面加個@, 他才會收到提示一樣。你可以把知乎的用戶當做MATLAB的函數,fminmax當做是一個知乎的問題,當你需要讓一個知乎用戶來回答某一個問題的時候,你就@這個知乎用戶,然後傳遞給一個知乎問題。


*嗯樓下大神說這個地方的使用不是匿名函數,而是函數句柄,@functionName這裡返回的是這個函數本身

不過似乎和匿名函數的用法差不多

============================

@表示匿名函數,或者叫做「lambda表達式」,具體可以百度lambda演算

lambda表達式是這樣的,

@(參數)(函數體),然後返回值是函數體的值

在這裡我感覺其實是一個設計缺陷,因為matlab允許不加括弧做函數調用,所以在這裡直接寫函數名的話,matlab把這個當成了一次函數調用,而不是這個函數本身,所以需要用lambda表達式來傳遞這個函數


推薦閱讀:

MATLAB中如何畫出下圖?文獻中的圖片如補充說明所示,謝謝。?
matlab計算積分無解?
matlab中有哪些有趣的命令?
如何在 MATLAB 中實現車牌號圖片的識別?
matlab稀疏矩陣使用的是什麼數據結構?

TAG:MATLAB |