2012-10-22 92 views
5

我遇到一個奇怪的問題quad函數。 我用quad計算簡單的整體,它工作了10至20次,然後Matlab的發出以下錯誤:關於在MATLAB中使用quad

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

這裏q和k爲標量。 我無法弄清楚什麼是錯的,爲什麼它幾個小時前工作。

編輯

這裏是我的代碼

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

錯誤消息似乎很自我解釋。你能顯示你的代碼嗎? (理想情況下,工作,不工作) – FabienAndre

+0

整個代碼太大,所以我會發送整合和繪製圖形的部分: –

+0

對於k = 1:100 xteor(k)= step * k; (q)= exp( - (q)。^ 2)。* q。^ 2 /((step。* k + 1)。^ 2)),0,1); end plot(xteor,yteor,'r'); –

回答

1

下面的片段對我的作品的倍頻(Matlab的GNU克隆)

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 

我的假設是你的錯誤是代碼中早些時候發生的其他事情的後果(可能與step不是標量?)有關。而不是把重點放在發生錯誤的這條線上。嘗試在錯誤出現之前搜索您已更改的內容。

+0

是的,謝謝。我翻遍了代碼,發現我在某個地方偶爾會放上「。」)))無論如何非常感謝您的幫助! –

+0

歡迎來到SO!由於您是新手,您可能需要查看此[鏈接](http://meta.stackexchange.com/a/5235/187716)。 – FabienAndre