2017-05-17 4 views
0

Ich habe mehrere anonyme Funktionen definiert, die normalerweise von drei Variablen eta1, eta2, y abhängen. Es besteht die folgende Beziehung zwischen eta1eta2 und yÄnderung der Variablen in MATLAB?

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

Also gebe ich grundsätzlich Werte für y und dann h1b(y=whatever) über arrayfun plotten Ich bin in der Lage:

[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) 

Meine Frage: Gibt es eine Möglichkeit, abrufen h1b formal abhängig von eta1 anstelle von y, als anonyme Funktion? Ohne zu bewerten y, anschließend eta1,eta2 und dann h1b, was ich tue.

Antwort

0

Lets klären. So haben Sie zur Zeit:

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

also auch Sie haben:

N3Y(W1,DW1,U2,DW2) 

oder:

N3Y(eta1,eta2) 

oder:

N3Y(y) 

Daher haben Sie:

h1b(N3Y) 

oder:

h1b(eta1,eta2) 

oder:

h1b(y) 

So hängt h1b ausschließlich auf eta1 und eta2, wenn Sie so wollen dot verworren eval und simplify Anrufe zu manipulieren, warum Sie gerade nicht Erstellen Sie zwei Versionen Ihrer Funktionen, eine mit y und andere mit eta s ?.

Sie müssen nicht umschreiben, die y s Versionen sind nur eval aus den eta s Versionen.

Verwandte Themen