Matlab中的函式控制代碼

2021-07-10 01:43:47 字數 1965 閱讀 8460

本系列文章由

@yhl_leo

@是matlab中的控制代碼函式的標誌符,即間接的函式呼叫方法。

主要有兩種語法:

handle = @functionname:返回乙個特別的matlab函式控制代碼,它提供了一種間接訪問函式的方式,也被成為函式的函式(function functions),是一種標準的matlab資料型別。在c/c++中,有個類似的用法稱為引用(使用識別符號&),引用只是它繫結的物件的另乙個名字,作用在應用上的所有操作事實上都會作用在該引用繫結的物件上。matlab裡控制代碼函式,與前面講得引用有些類似,我們通過語句handle = @functionname給名為functionname的函式取了個別名handle,也就是說你既可以用函式functionname實現你要實現的功能,也可以使用handle實現同樣的功能。在python裡,你大可直接用變數賦值的方式handle = functionname達到這一目的。

基本用法如下:

% .m 檔案函式控制代碼

>>fh_mfile = @humps

fh_mfile =

@humps

% 內建函式控制代碼

>>fh_builtin = @cos

fh_builtin =

@cos

>>fh_builtin(pi)

ans =

-1

handle = @(arglist)anonymous_function:也稱為匿名函式,@左邊為乙個函式控制代碼,@後定義了匿名函式的輸入引數(多個引數用逗號分隔開),最後一部分為匿名函式的表示式。基本用法如下:

>>sqr = @(x) x.^2

>>a = sqr([1, 2, 3])

a = 1

49

這裡列舉四個常見的控制代碼處理函式,如下表:

函式說明

functions返回乙個控制代碼的詳細資訊

str2func將乙個函式名作為字串傳遞給此函式,建立該函式的函式控制代碼

func2str從乙個函式控制代碼中提取函式名,對於內建函式或m檔案函式控制代碼,返回函式的名稱,對於匿名函式,返回其表示式

structfun將控制代碼結構體陣列的每乙個控制代碼函式的依次作用於陣列,返回每個控制代碼函式的作用於陣列的值

逐一給出示例:

>> functions(sqr)

ans =

function: '@(x)

x.^2'

type: 'anonymous'

file: ''

workspace:

>>fh2 = str2func('sqr')

fh2 =

@sqr

>> func2str(fh2)

ans =

sqr>> func2str(sqr)

ans =

@(x)x.^2

>> s.a = @sin; s.b = @cos; s.c = @tan;

>> structfun(@(x)x(linspace(1, 4, 3)), s, 'uniformoutput', false)

ans =

a: [0.8415

0.5985 -0.7568]

b: [0.5403 -0.8011 -0.6536]

c: [1.5574 -0.7470

1.1578]

MATLAB函式控制代碼的小總結

函式控制代碼在matlab使用過程中經常涉及到,個人小小的彙總一下,有不足和錯誤之處還望大家多多包涵和指點補充 函式控制代碼的定義具體參見官方文件這裡就不多加敘述了 很多matlab內建函式使用時都需要涉及到函式控制代碼,像integral,fzero,fsolve等函式,這裡以integral為例...

matlab中函式的控制代碼是什麼意思?有什麼作用?

比定義f x x 2寫 f x x.2 其 x x.2 匿名函式第括號面自變數第二括號面表示式 函式指標 f x x.2 表示匿名函式 x x.2 賦值給f於f表示該函式 於f 2 2.2 4 f 1 3 1 3 2 1 4 9 等等 定義匿名函式呼叫別匿名函式比 f1 x,y x.2 y.2 定義...

MATLAB函式控制代碼 單元陣列和結構

函式控制代碼 單元陣列和結構 函式控制代碼 包含有引用函式時所有的資訊,優點 將函式控制代碼作為呼叫中的參量傳遞到另乙個函式 可以儲存到資料結構或檔案中 函式控制代碼運算子 有兩種函式控制代碼 1 命名函式控制代碼 建立例如 f sin 呼叫例如 f pi 4 或者 sin pi 4 2 匿名函式控...