1. 程式人生 > >matlab函式控制代碼介紹

matlab函式控制代碼介紹

問:[email protected](x)acos(x)表示什麼意思?其中@代表什麼?答:表示f為函式控制代碼,@是定義控制代碼的運算子。[email protected](x)acos(x) 相當於建立了一個函式檔案:% f.m
function  y=f(x)
y=acos(x);

若有下列語句:[email protected](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
、語法:[email protected]  or [email protected](arglist)anonymous_function
3
、描述:函式控制代碼(function handle)是一種能夠提供函式間接呼叫的matlab value。你可以通過傳遞控制代碼來呼叫各種其他功能。你也可以將控制代碼儲存到資料結構中備用(例如Handle Graphic 回撥)。控制代碼是matlab的標準資料型別之一。當建立控制代碼時,你所指定的函式必須在matlab搜尋路徑之中,並且必須在建立語句的

scope之中。例如,只要在定義子函式的檔案之中,你句可以為這個子函式建立控制代碼。這些條件不適用於evaluate函式控制代碼。例如,你可以在一個單獨(out-scope)通過控制代碼執行一個子函式,這要求控制代碼是在in-scope建立的。
       [email protected](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)的功能。

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

[email protected]

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);另外這裡的函式名字還可以是一個函式控制代碼,即[email protected];
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函式控制介紹

問:[email protected](x)acos(x)表示什麼意思?其中@代表什麼?答:表示f為函式控制代碼,@是定義控制代碼的運算子。[email protected](x)acos(x) 相當於建立了一個函式檔案:% f.m function 

matlab 函式控制(function handle)

前言 函式控制代碼是一種MATLAB的資料型別,它包含引用函式的資訊。 使用函式控制代碼的好處 傳遞函式訪問資訊給其它的函式 允許對子函式和私有函式更廣的訪問 減少需要定義的函式的數量 改善重複操作的效能 下面給出一個簡單的例子 建

MATLAB函式控制 Function Handle

作用: 將函式傳遞給另一個函式(function functions)。  指定回撥函式。 例如,響應UI事件或與資料採集硬體互動的回撥。  構造行內函數的控制代碼,而不是儲存在程式檔案(匿名

Matlab函式控制

Matlab中函式的呼叫方法分為直接呼叫法和間接呼叫法。直接呼叫函式:被呼叫的函式通常稱為子函式。但是子函式只能被與其M檔案同名的主函式或在M檔案中的其他函式所呼叫,同時在一個檔案中只能有一個主函式。而使用函式控制代碼對函式進行呼叫則避免了上述問題。函式控制代碼實際上提供了一

Matlab中的函式控制@

@是Matlab中的控制代碼函式的標誌符,即間接的函式呼叫方法。 1 控制代碼函式 主要有兩種語法: handle = @functionname handle = @(arglist)

matlab函式控制

函式控制代碼(function handle)是MATLAB中的一類特殊的資料結構,它的地位類似於其它計算機語言裡的函式物件(Javascript,Python),函式指標(C++),或者函式引用(Perl)。作用是將一個函式封裝成一個變數,使其能夠像其它變數一樣在程式的不同部分傳遞。

matlab set函式 控制操作函式

    MATLAB給每種物件的每一個屬性規定了一個名字,稱為屬性名,而屬性名的取值成為屬性值。例如,LineStyle是曲線物件的一個屬性名,它的值決定著線型,取值可以是'-' 、':'、'-.'、'--'或'none'。 2.屬性的操作     set函式的呼叫格式為:     set(控制代碼,

matlab圖形控制+圖形物件+圖形物件的屬性+物件操作

文章目錄 前言: 圖形物件: 圖形控制代碼: 圖形物件的屬性: 物件的基本操作 figure物件(圖形視窗) figure()函式: clf()函式清空當前圖

matlab_函式控制@

  or [email protected](arglist)anonymous_function 3、描述:函式控制代碼(function handle)是一種能夠提供函式間接呼叫的matlab value。你可以通過傳遞控制代碼來呼叫各種其他功能。你也可以將控制代碼儲存到資料結構中備用(例如Ha

MATLAB圖形控制

1 圖形物件及其控制代碼 繪圖函式將不同的曲線或曲面繪製在圖形視窗中,而圖形視窗由不同的物件(如座標軸、曲線、曲面或文字等)組成的圖形介面。Matlab給每個圖形物件分配一個識別符號,稱為控制代碼。以後可以通過該控制代碼對該圖形物件的屬性進行設定,也可以獲取有關的屬性值,

MATLAB控制圖形物件的建立函式函式描述

物件型別 建立函式 物件描述 根 root 計算機螢幕 圖形視窗 figure 顯示圖形和使用者介面的視窗 座標軸 axes 在圖形中

MATLAB控制相關函式和程式碼示例(設定美化圖表屬性)

控制代碼的獲取 函式控制代碼:@函式名,比如@sin,@exp 當前圖形視窗figure控制代碼:gcf 當前座標軸控制代碼:gca 被滑鼠最近單擊物件的控制代碼:gco 圖形物件的屬性名 線寬:LineWidth 線形:LineStyle 顏色:Color x方向網格:x

emWin介面庫注意事項之自定義回撥函式之後,控制為0

        由於在嵌入式裝置上可供使用的介面庫很少,專案當中所使用的介面庫為德國SEGGER公司開發的emWin介面庫。使用上和windows的GDI大致類似,也提供了豐富的API介面。如果我們需要對控制元件進行自繪的話,一定要進行的一個操作是通過設定回撥

matlab學習筆記 圖形控制屬性總結

1.MATLAB給每種物件的每一個屬性規定了一個名字,稱為屬性名,而屬性名的取值成為屬性值。例如,LineStyle是曲線物件的一個屬性名,它的值決定著線型,取值可以是'-' 、':'、'-.'、'--'或'none'。 2.屬性的操作     set函式的呼叫格式為:   

C++進階--擁有資源控制的類(淺拷貝,深拷貝,虛建構函式)

// Person通過指標擁有string class Person { public: Person(string name) { pName_ = new string(name); } ~Person() { delete pName_; } void printName() { c

幾個ARX取CAD視窗控制函式

標頭檔案:rxmfcapi.h CWinApp* acedGetAcadWinApp() 返回指向AutoCAD應用程式類例項的指標 當用COM方式操作CAD的選單工具欄時會用到。 CDocument* acedGetAcadDoc() 返回指向AutoCAD檔案

如何獲得視窗控制(FindWindow函式的使用)

一: 獲得主視窗 HWND WINAPI FindWindow( _In_opt_  LPCTSTR lpClassName, _In_opt_  LPCTSTR lpWindowName ); 該函式通過建立視窗時的類名和視窗名查詢視窗並返回該視窗的控制代碼,

MFC獲得各種控制函式總結

本文內容索引: ========================================================= MFC中獲取常見類控制代碼<檢視類,文件類,框架類,應用程式類> MFC中獲取視窗控制代碼及相關函式  MFC獲取控制元件控制代碼 MFC各類中獲取類

如何查詢窗體,獲取窗體的控制,Hwnd FindWindow函式

/*CWnd::FindWindowstatic CWnd* PASCAL FindWindow( LPCTSTR lpszClassName, LPCTSTRlpszWindowNa- me );返回值:標識了具有指定的類名或視窗名的視窗。如果沒有找到這樣的視窗,則返回N

MATLAB繪圖屬性操作--學會使用控制

       前言 MATLAB的繪圖功能十分強大,可以繪製各種各樣的圖形,資料視覺化十分強大,但有時,採用預設的繪圖屬性,圖形的形式符合我們的要求,學會使用圖形控制代碼,並利用控制代碼修改屬性是十分重要的。 1.控制代碼之間的關係         在MATLAB中figu