2017-05-17 116 views
0

我已經定義了幾個匿名函數,通常取決於三個變量eta1, eta2, y。有eta1eta2y在MATLAB中變量的變化?

[email protected](y) ((i*alpha1*lambda_0)^(1/3))*y+eta01; 
[email protected](y) ((i*alpha2*lambda_0)^(1/3))*y+eta02; 

所以我基本上放棄了y值,然後我可以積h1b(y=whatever)通過arrayfun之間的下列關係:

[email protected](eta) blablabla 
[email protected](y) i*alpha1*(DW1(eta1(y))*conj(U2(eta2(y)))+W1(eta1(y))... 
    *conj(DU2(eta2(y)))); 
[email protected](y) -(1/(lambda_0*alphats))*(betats*N3Y(y)); 

vec=arrayfun(h1b,eta1(0:0.01:N)); 
plot(abs(vec),0:0.01:N) 

我的問題:是有辦法作爲一個匿名函數,根據eta1而不是y正式檢索h1b?沒有評估y,然後eta1,eta2,然後h1b,這是我所做的。

回答

0

讓我們澄清。所以,你現在有:

syms y eta1 eta2; 
eta1(y), eta2(y) 
W1(eta1), DW1(eta1) 
U2(eta2) DU2(eta2) 

因此,你也有:

N3Y(W1,DW1,U2,DW2) 

或:

N3Y(eta1,eta2) 

或:

N3Y(y) 

因此,你必須:

h1b(N3Y) 

或:

h1b(eta1,eta2) 

或:

h1b(y) 

所以,h1b完全取決於eta1eta2,所以如果你點希望操縱淫evalsimplify電話,爲什麼你只是不創建兩個版本的功能,一個是y,另一個是eta s ?.

你不需要重寫,y的版本只是evaleta的版本中獲得的。