【问题标题】:About using quad in MATLAB关于在 MATLAB 中使用 quad
【发布时间】:2012-10-12 08:24:50
【问题描述】:

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

【问题讨论】:

  • 错误信息似乎很不言自明。你能显示你的代码吗? (理想情况下,工作和不工作)
  • 整个代码太大,所以我将发送整合和绘制图形的部分:
  • for k=1:100 xteor(k)=step*k; yteor(k)=quad(@(q)(exp(-(q).^2).*q.^2/((step.*k+1).^2)),0,1);结束情节(xteor,yteor,'r');
  • Matlab 认为我给他发了一个向量,但我给他发了一个标量。
  • 您可以编辑您的问题(帖子下方的灰色链接),并尝试使用 Markdown 格式。最后,通常可以看到提供完整的工作示例(此处添加stepxteoryteorinitialisation。

标签: matlab integration integrate


【解决方案1】:

以下 sn-p 在 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 不是标量有关?)。而不是关注出现错误的这条线。尝试在错误出现之前搜索您所做的更改。

【讨论】:

  • 好的,谢谢。我查看了代码,发现我偶尔在某个地方放了“。”)))无论如何,非常感谢您的帮助!!!
  • 欢迎来到 SO!由于您是新人,您可能需要查看此link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多