2017-11-28 4 views
0

Ich versuche, ein Doppelintegral zu berechnen, aber einen Fehler erhalten.Matlab Fehler bei der Berechnung Doppelintegral

Mein Code ist:

clear 
Gamma = rand([22,1]); 
data_i = rand([1,10]); 
Y_1 = 1; 
fun  = @(D_star, Y_0) fun1(D_star , Y_1 , Y_0 , Gamma , data_i); 
p  = integral2 (fun , 0 , 1 , 0 , 1); 

und die Funktion fun1 ist definiert als

function [p] = fun1(D_star , Y_1 , Y_0 , Gamma , data_i) 

gamma=Gamma(1:3); 
beta_1=Gamma(4:5); 
beta_0=Gamma(6:7); 
alpha_D=Gamma(8); 
alpha_1=Gamma(9); 
alpha_0=Gamma(10); 
sigma2_1=Gamma(11); 
sigma2_0=Gamma(12); 
Lambda=Gamma(13:17); 
sigma2_M=Gamma(18:22); 

Sigma2_temp = [1 ; sigma2_1 ; sigma2_0 ; sigma2_M]; 
Alpha  = [alpha_D ; alpha_1 ; alpha_0 ; Lambda]; 
Sigma2  = Alpha * Alpha' + diag(Sigma2_temp); 

Z = data_i(3:5); 
X = data_i(3:4); 
M = data_i(6:10); 

Mu = [Z*gamma , X*beta_1 , X*beta_0 , zeros(1,5) ]'; 

YY = [D_star ; Y_1 ; Y_0 ; M' ]; 

p = mvnpdf(YY,Mu,Sigma2); 
end 

Ich glaube nicht, gibt es ein Problem bei der Definition der Funktionen, weil ich sie bewerten kann (zB Spaß (1,1) gib mir eine Antwort). Die Fehlermeldung, die ich erhalte, ist:

Error using vertcat 
Dimensions of matrices being concatenated are not consistent. 

Error in fun1 (line 23) 
YY = [D_star ; Y_1 ; Y_0 ; M' ]; 

Error in @(D_star,Y_0)fun1(D_star,Y_1,Y_0,Gamma,data(n,:)) 


Error in integral2Calc>integral2t/tensor (line 228) 
     Z = FUN(X,Y); NFE = NFE + 1; 

Error in integral2Calc>integral2t (line 55) 
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT); 

Error in integral2Calc (line 9) 
    [q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct); 

Error in integral2 (line 106) 
    Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct); 

Ich habe auch versucht, den Befehl -quad2d- statt -integral2- und bekam einen ähnlichen Fehler. Irgendwelche Ideen?

+0

Die Fehlermeldung sagt alles. Sie versuchen, Matrizen zu verknüpfen, deren Größe nicht übereinstimmt. –

+0

Ja, aber ich verstehe nicht warum, weil die Funktion an sich funktioniert, also muss es etwas mit der Integration geben. – Muly

+0

Offensichtlich. Diese Linie verkettet 4 Elemente, drei werden direkt aus Eingabeparametern genommen. Ihre Eingabeparameter sind also die falschen Formen oder Größen. –

Antwort

0

Ich habe das Problem gefunden. Gemäß der Dokumentation muss die Funktion innerhalb des Integrals bei Verwendung von -integral2 ein Array beider Variablen als Eingabe erhalten und ein Array als Ausgabe zurückgeben.

Verwandte Themen