【发布时间】:2011-12-11 21:08:09
【问题描述】:
我需要编写自己的函数,其形式为f(x,y)=Integrate(g(x,y,z),z from 0 to inf)。所以我使用的代码是:
function y=f(x,y)
g=@(z)exp(-z.^2)./(z.^x).*(z.^2+y.^2).^(x/2);% as a function of x,y and z
y=quadgk(g,0,inf)
如果我将其称为f(x0,y0) 之类的单个值,它会起作用,但如果我尝试计算f([1:10],y0) 之类的值,则错误消息会显示时间和维度有问题。原则上,我可以使用 for 循环,但是我的代码会变慢并且需要很长时间。我能从你们那里得到什么帮助吗?还是参考文献?
我试图避免 for 循环,因为在 matlab 中使用矩阵计算比使用 for 循环快得多。我想知道是否有任何技巧可以利用此功能。
提前感谢您的帮助,
林恩
【问题讨论】:
-
在您的情况下,我认为您应该使用 for 循环。如果你有
x=1:10,我想它所花费的时间不会超过正常功能的十倍。 -
好吧,如果我执行 for 循环 10 次,那不是问题,但是我需要将此函数传递给另一个函数以进行一些优化,为了做到这一点,这个 f 函数必须是能够接受向量输入并产生向量输出...