2012-10-22 15 views
5

Ich stoße auf ein seltsames Problem mit quad Funktion. Ich war mit quad einfachen Integral zu berechnen, und es funktionierte für 10 bis 20-mal, dann gibt Matlab die folgenden Fehler:Über die Verwendung von Quad in MATLAB

Error using quad (line 75) 
The integrand function must return an output vector of the same length as the input vector. 
yteor(k) = quad(@(q)(exp(-(q).^2).*q.^2/(k.^2+1)), 0, 1); 

Hier q und k Skalare sind. Ich kann nicht bekommen, was falsch ist und warum es vor einigen Stunden funktionierte.

bearbeiten

Hier ist mein Code

for k=1:100, 
    xteor(k)=step*k; 
    yteor(k)=quad(@(q)(exp(-(q).^2).*q.^2/((step.*k+1).^2)),0,1); 
end plot(xteor,yteor,'r'); 
+2

Die Fehlermeldung scheint ziemlich selbsterklärend zu sein. Könnten Sie Ihren Code zeigen? (Im Idealfall arbeiten und nicht arbeiten eins) – FabienAndre

+0

Der gesamte Code ist zu groß, so werde ich das Teil senden, die integrieren und zeichnen Sie die Grafik: –

+0

für k = 1: 100 xteor (k) = Schritt * k; yteor (k) = quad (@ (q) (exp (- (q)^2) * q^2/((Schritt * k + 1)^2)), 0,1.....); Ende Handlung (xteor, yteor, 'r'); –

Antwort

1

Der folgende Ausschnitt funktioniert für mich auf Octave (Matlab GNU-Klon)

step = 1; 
xteor = zeros(100,1); 
yteor = zeros(100,1); 

for k=1:100, 
    xteor(k)=step*k; 
    yteor(k)=quad(@(q)(exp(-(q).^2).*q.^2/((step.*k+1).^2)),0,1); 
end 
plot(xteor,yteor,'r'); 
pause 

Meine Hypothese ist, dass Ihr Fehler das ist Konsequenz von etwas anderes passiert früher in Ihrem Code (vielleicht bezogen auf step kein Skalar?). Anstatt sich auf diese Linie zu konzentrieren, wo der Fehler entsteht. Versuchen Sie zu suchen, was Sie geändert haben, bevor der Fehler angezeigt wird.

+0

Ja, danke. ich durch den Code gesucht und gefunden, dass irgendwo occasinally ich habe„“))) Auf jeden Fall vielen dank für die Hilfe !!! –

+0

Willkommen bei SO! Da Sie neu sind, sollten Sie dies [link] (http://meta.stackexchange.com/a/5235/187716) überprüfen. – FabienAndre