2016-02-19 101 views
0

假設我有我以這種方式創建的變量向量:如何根據Matlab中的另一個內聯函數定義內聯函數?

A = sym('A%d',[1 , 3]); 

而且還內聯函數,它是A的功能:

f = inline(A(1)^2 + A(2)^3 - 10*A(3) , 'A'); 

現在的問題是如何來定義另一個函數,如g,它具有以下形式: g = f*10或依賴於f的任何其他類型的函數。

在此先感謝

+1

任何理由使用過時'inline'?改用匿名函數! – Daniel

+0

我應該怎麼做?你能解釋一下嗎? –

+0

您是否閱讀過[匿名函數文檔](http://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html?s_tid=doc_12b)?首先嚐試重新定義'f'作爲匿名函數。 – Daniel

回答

1

正如@Daniel建議,你應該使用anonymous functions。在inline的文檔中,Mathworks警告說這將在未來版本中刪除,並告訴您使用匿名函數。

的匿名函數的語法很簡單:

f = @(A) A(1)^2 + A(2)^3 - 10*A(3) 

@(A),您可以定義要一個輸入變量,並將其命名爲A。如果您有兩個輸入,AB,然後寫@(A,B)。但請注意:這些名稱AB只是您的匿名函數中的內部名稱。以下兩個函數100%相同:

f1 = @(x) 10*x 
f2 = @(A) 10*A 

您可以將這些匿名函數調用爲正常函數,例如,

f([1, 2, 3]) 
f(x) 

如果你想創建一個功能g = 10*f,那麼你定義了這個功能

g = @(A) 10*f(A) 

這裏有一個小的演示:

A = sym('A%d',[1 , 3]); 
f = @(x) x(1)^2 + x(2)^3 - 10*x(3) 
g = @(x) 10*f(x) 

g(A) 
ans = 
    10*A1^2 + 10*A2^3 - 100*A3