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
的任何其他類型的函數。
在此先感謝
假設我有我以這種方式創建的變量向量:如何根據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
的任何其他類型的函數。
在此先感謝
正如@Daniel建議,你應該使用anonymous functions。在inline
的文檔中,Mathworks警告說這將在未來版本中刪除,並告訴您使用匿名函數。
的匿名函數的語法很簡單:
f = @(A) A(1)^2 + A(2)^3 - 10*A(3)
與@(A)
,您可以定義要一個輸入變量,並將其命名爲A
。如果您有兩個輸入,A
和B
,然後寫@(A,B)
。但請注意:這些名稱A
和B
只是您的匿名函數中的內部名稱。以下兩個函數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
任何理由使用過時'inline'?改用匿名函數! – Daniel
我應該怎麼做?你能解釋一下嗎? –
您是否閱讀過[匿名函數文檔](http://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html?s_tid=doc_12b)?首先嚐試重新定義'f'作爲匿名函數。 – Daniel