日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab函数句柄介绍

發布時間:2023/12/31 循环神经网络 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab函数句柄介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問:f=@(x)acos(x)表示什么意思?其中@代表什么?
答:表示f為函數句柄,@是定義句柄的運算符。f=@(x)acos(x)?相當于建立了一個函數文件:
% f.m
function??y=f(x)
y=acos(x);

若有下列語句:xsqual=@(x)1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2);

則相當于建立了一個函數文件:

% xsqual.m

function y=xsqual(x)

y=1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2);

詳細說明:

1、函數句柄/function_handle(@):是一種間接調用函數的方式。
2
、語法:handle=@functionname??or?handle=@(arglist)anonymous_function
3
、描述:函數句柄(function handle)是一種能夠提供函數間接調用的matlab value。你可以通過傳遞句柄來調用各種其他功能。你也可以將句柄存儲到數據結構中備用(例如Handle Graphic?回調)。句柄是matlab的標準數據類型之一。
??????
當創建句柄時,你所指定的函數必須在matlab搜索路徑之中,并且必須在創建語句的scope之中。例如,只要在定義子函數的文件之中,你句可以為這個子函數創建句柄。這些條件不適用于evaluate函數句柄。例如,你可以在一個單獨(out-scope)通過句柄執行一個子函數,這要求句柄是在in-scope創建的。
???????handle=@(arglist)anonymous_function
用來創建匿名函數(anonymous function)并返回該匿名函數的句柄。括號右邊的函數體是單個的matlab語句(statement)或者matlab命令。arglist是一個用逗號分隔的輸入變量列表。該函數通過句柄handle執行。
備注:函數句柄是標準的matlab數據類型。因此,你可以像matlab其他數據類型一樣進行操作。

4、函數句柄的好處
??????
?提高運行速度。因為matlab對函數的調用每次都是要搜索所有的路徑,從set path中我們可以看到,路徑是非常的多的,所以如果一個函數在你的程序中需要經常用到的話,使用函數句柄,對你的速度會有提高的。
??????
?使用可以與變量一樣方便。比如說,我再這個目錄運行后,創建了本目錄的一個函數句柄,當我轉到其他的目錄下的時候,創建的函數句柄還是可以直接調用的,而不需要把那個函數文件拷貝過來。因為你創建的function handles中,已經包含了路徑,

?

?

MATLAB函數句柄

函數句柄(Function handle)是MATLAB的一種數據類型。

包含了函數的路徑、函數名、類型以及可能存在的重載方法;

引入函數句柄是為了使feval及借助于它的泛函指令工作更可靠;使函數調用變量調用一樣方便靈活;提高函數調用速度,特別在反復調用情況下更顯效率;提高軟件重用性,擴大子函數和私用函數的可調用范圍;迅速獲得同名重載函數的位置、類型信息。

--------------------------------------

可以與變量一樣方便地使用:比如說,在現在這個目錄運行時,創建了本目錄一個函數的句柄,當轉到其他目錄時,可以通過函數句柄直接調用上一個目錄的函數,而不需要把那個函數文件復制過來,因為創建的函數句柄中已經包含了路徑信息;

提高函數調用速度:因為matlab對函數的調用每次都是要搜索所有的路徑,從set path中可以看到,路徑是非常的多的,所以如果一個函數在程序中需要經常用到的話,使用函數句柄,對速度會有提高的;

--------------------------------------

MATLAB中函數句柄的使用使得函數也可以成為輸入變量,并且能很方便的調用,提高函數的可用性和獨立性。

函數句柄實際上提供了一種間接調用函數的方法。
創建函數句柄需要用到操作符@

創建函數句柄的語法:
fhandle = @function_filename

調用函數時就可以調用該句柄,可以實現同樣的功能。

例如fhandle = @sin就創建了sin的句柄,輸入fhandle(x)其實就是sin(x)的功能。

% % ------------------------------------------------

fhandle=@sin

fhandle(pi)

sin(pi)

% % ------------------------------------------------

例如:

新建M文件f1.m

function y=f1(X)

x1=X(1);x2=X(2);
y=x1^2+x1*x2;

新建M文件ftest.m

function Y=ftest(f,X)

syms x1 x2;
F=f([x1,x2]);
v=[x1,x2];
grad=jacobian(F,v);
Y=subs(grad,v,X);

MATLAB命令窗口輸入Y=ftest(@f1,[2,1]),得到結果:

Y =

????5????2

此處@f1即為函數f1的句柄,可以用class(@f1)判斷變量的類型,得到ans = function_handle即函數句柄。函數ftest是求一個二維函數在指定點的梯度值。我們可以替換目標函數為f2或其他函數同樣可以求得梯度。這樣函數ftest就可以適用于任何二維函數而不必做改動了。

?

feval函數如何理解
feval
函數的最通常的應用是以下形式:
feval_r('functionname',parameter)
舉個簡單的例子:
比如要計算sin(2),當然可以直接用命令y=sin(2);利用feval,還可以這樣來做:
y
feval_r('sin',2);另外這里的函數名字還可以是一個函數句柄,即h=@sin;
y=feval_r(h,2);
或者直接寫成y=feval_r(@sin,2);

?

內聯函數(inline function

inline函數不是函數句柄,?是另外一種類型,?它也可以用變量來表示函數,?用法也和一般函數,?函數句柄是一樣的.內聯函數和普通的函數句柄,準確說跟匿名函數比較類似,可以通過一個函數表達式近而得到該函數。

matlab創建局部函數時,可用inline。優點是不必將其儲存為一個單獨文件。在運用中有幾點限制:不能調用另一個inline函數,只能由一個matlab表達式組成,并且只能返回一個變量---顯然不允許[u,v]這種形式。因而,任何要求邏輯運算或乘法運算以求得最終結果的場合,都不能應用inline

語法格式如下:

1?變量名=inline(表達式);

2?變量名=inline('函數表達式', '變量名1','變量名2', ... ,'變量名n');(推薦)

例如:

a='x+y';

f=inline(a)
f(2,3)

ans =

????5

或者:

f=inline('x+y','x','y')

f(2,3)

ans =

????5

inline函數可以對某個變量調用數組,如:

Fofx=inline(‘x .^2*cos(a*x)-b’ , ‘x’,’a’,’b’);

g= Fofx([pi/3 pi/3.5],4,1)

系統輸出為:g=-1.5483 -1.7259

總結

以上是生活随笔為你收集整理的matlab函数句柄介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。