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

歡迎訪問 生活随笔!

生活随笔

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

循环神经网络

matlab函数句柄介绍

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

問:f=@(x)acos(x)表示什么意思?其中@代表什么?
答:表示f為函數(shù)句柄,@是定義句柄的運(yùn)算符。f=@(x)acos(x)?相當(dāng)于建立了一個(gè)函數(shù)文件:
% 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);

則相當(dāng)于建立了一個(gè)函數(shù)文件:

% xsqual.m

function y=xsqual(x)

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

詳細(xì)說明:

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

4、函數(shù)句柄的好處
??????
?提高運(yùn)行速度。因?yàn)?/span>matlab對(duì)函數(shù)的調(diào)用每次都是要搜索所有的路徑,從set path中我們可以看到,路徑是非常的多的,所以如果一個(gè)函數(shù)在你的程序中需要經(jīng)常用到的話,使用函數(shù)句柄,對(duì)你的速度會(huì)有提高的。
??????
?使用可以與變量一樣方便。比如說,我再這個(gè)目錄運(yùn)行后,創(chuàng)建了本目錄的一個(gè)函數(shù)句柄,當(dāng)我轉(zhuǎn)到其他的目錄下的時(shí)候,創(chuàng)建的函數(shù)句柄還是可以直接調(diào)用的,而不需要把那個(gè)函數(shù)文件拷貝過來。因?yàn)槟銊?chuàng)建的function handles中,已經(jīng)包含了路徑,

?

?

MATLAB函數(shù)句柄

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

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

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

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

可以與變量一樣方便地使用:比如說,在現(xiàn)在這個(gè)目錄運(yùn)行時(shí),創(chuàng)建了本目錄一個(gè)函數(shù)的句柄,當(dāng)轉(zhuǎn)到其他目錄時(shí),可以通過函數(shù)句柄直接調(diào)用上一個(gè)目錄的函數(shù),而不需要把那個(gè)函數(shù)文件復(fù)制過來,因?yàn)閯?chuàng)建的函數(shù)句柄中已經(jīng)包含了路徑信息;

提高函數(shù)調(diào)用速度:因?yàn)?span style="word-wrap:normal; word-break:normal; line-height:21px">matlab對(duì)函數(shù)的調(diào)用每次都是要搜索所有的路徑,從set path中可以看到,路徑是非常的多的,所以如果一個(gè)函數(shù)在程序中需要經(jīng)常用到的話,使用函數(shù)句柄,對(duì)速度會(huì)有提高的;

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

MATLAB中函數(shù)句柄的使用使得函數(shù)也可以成為輸入變量,并且能很方便的調(diào)用,提高函數(shù)的可用性和獨(dú)立性。

函數(shù)句柄實(shí)際上提供了一種間接調(diào)用函數(shù)的方法。
創(chuàng)建函數(shù)句柄需要用到操作符@

創(chuàng)建函數(shù)句柄的語法:
fhandle = @function_filename

調(diào)用函數(shù)時(shí)就可以調(diào)用該句柄,可以實(shí)現(xiàn)同樣的功能。

例如fhandle = @sin就創(chuàng)建了sin的句柄,輸入fhandle(x)其實(shí)就是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]),得到結(jié)果:

Y =

????5????2

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

?

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

?

內(nèi)聯(lián)函數(shù)(inline function

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

matlab創(chuàng)建局部函數(shù)時(shí),可用inline。優(yōu)點(diǎn)是不必將其儲(chǔ)存為一個(gè)單獨(dú)文件。在運(yùn)用中有幾點(diǎn)限制:不能調(diào)用另一個(gè)inline函數(shù),只能由一個(gè)matlab表達(dá)式組成,并且只能返回一個(gè)變量---顯然不允許[u,v]這種形式。因而,任何要求邏輯運(yùn)算或乘法運(yùn)算以求得最終結(jié)果的場合,都不能應(yīng)用inline

語法格式如下:

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

2?變量名=inline('函數(shù)表達(dá)式', '變量名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函數(shù)可以對(duì)某個(gè)變量調(diào)用數(shù)組,如:

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

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

系統(tǒng)輸出為:g=-1.5483 -1.7259

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。