5

関数で奇妙な問題が発生しましたquad。私はquad単純な積分を計算するために使用していましたが、10 から 20 回は機能し、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);

ここで、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');
4

1 に答える 1

1

次のスニペットは、Octave (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、スカラーではないことに関連していますか?)。エラーが発生したこの行に焦点を当てる代わりに。エラーが表示される直前に変更した内容を検索してみてください。

于 2012-10-22T15:22:34.133 に答える