我需要编写自己的函数,其形式为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循环要快得多。 我想知道是否有任何技巧可以利用此功能。

感谢您的任何帮助,

林恩

===============>>#1 票数:0

也许您可以尝试转置间隔,创建基于行的值而不是基于列的f([1:10]',y0) 否则,函数中的某些内容可能是错误的,例如,要使x^y可以将列表用作输入,您必须在前缀x.^y加上前缀。 我认为多方面的划分也是如此。

===============>>#2 票数:0

如果循环对您来说没有问题,则应执行以下操作:

function y2=f(x,y)
y2=zeros(size(x));

for n=1:numel(x)
  g=@(z)exp(-z.^2)./(z.^x(n)).*(z.^2+y.^2).^(x(n)/2);% as a function of x,y and z
  y2(n)=quadgk(g,0,inf)
end

===============>>#3 票数:0

这里的问题是, quadk本身使用向量作为g参数。 然后,您在g有了z.^x类的东西,这是两个向量的幂,仅当z和x具有相同维数时才定义。 但这不是您想要的。

我假设您要为x所有参数求值函数,并且输出向量的尺寸与x相同。 但这似乎是不可能的,因为即使是这个简单的例子

g=@(x)[x;x.^2]
quad(g,0,1)

不起作用:

Error using quad (line 79)
The integrand function must return an output vector of the same length as the
input vector.

使用quadgk时会显示类似的错误。 该文档还说,该例程仅适用于标量函数,这并不奇怪,因为自适应正交规则通常会对每个函数使用不同的点来评估积分。

您必须改用quadv ,它可以集成向量值函数。 但这会产生错误的结果,因为您的函数集成在间隔[0,\\ infty)中。

  ask by user1092696 translate from so

未解决问题?本站智能推荐:

1回复

Matlab与函数

我不得不问这个问题,真是太不可思议了,但是每个人都曾经是菜鸟。 对?!? 对于一个分配,我们必须实现以下总和:PI-3 =从i = 1到(-1)^(i + 1)/ i(i + 1)(2i + 1)的N的总和(对于缺乏这里的Mathjax) 因此在Java中: 在Matlab中
2回复

Matlab函数

喂,我有以下名为stat.m的函数 我将x定义为[1,2,5,7,9]的向量 当我键入a = stat(x) ,matlab为什么在命令提示符下为最后一行返回a = 5 ?
1回复

我如何定义一个整数以在Matlab的矩阵函数中使用它

我的目标是编写一个具有3个输入和1个输出的矩阵函数(plymecfunc)。 这是我写的功能: 错误是: ??? 输入参数“ E1”未定义。 ==> plymecfunc在6时出错 S11 = 1 / E1;
1回复

Matlab中的函数句柄

我在理解此代码段时遇到问题 我的想法是lsqnonlin将递归调用argn-> fun函数,但是我不确定。 这样对吗?
1回复

如何概括Matlab函数?

我有一个Matlab函数。 我需要对此功能进行概括。 此代码的目的是检查TableTemp中的IndicMP是否存在,然后提取相关的年龄限制,例如:Age_Limite_DC,Age_Limite_IT,Age_Limite_Ch和Transfert_Prime_IT_DC。 我的想法是泛
2回复

Matlab中的函数实现

我需要在Matlab中编写单位步进函数: 以下是我试图实现的方法: 我测试了它的不同参数值,它返回正确的值,但如果我定义数字数组n = [ - 2,-1,0,1,2]并调用test = u(n)它只返回值1。我应该怎么做才能使它返回数组,我的意思是应该为n的每个值评估函数,并将评估
1回复

在Matlab中绘制函数

我对在Matlab中绘制以下函数感兴趣,但是没有成功。 我无法绘制点。
1回复

Matlab函数循环

我试图做一个循环来重做Matlab函数1000次。 这是程序 我想要的是将此函数迭代1000次,每次SIR的值都会由于生成的随机数而有所不同。 对于每次迭代,我希望将SIR的值加在一起(加起来),并在第1000次迭代的末尾找到平均SIR(平均值)。 谢谢您的帮助
2回复

在Matlab中调用函数

我在Matlab中有一个MinCUT算法。 是功能! 如何从我的邮件文件中调用它! 我必须定义所有变量吗? 还是只需要定义输入?
2回复

幻方函数Matlab

对于一个项目,我应该编写自己的函数,该函数将与matlab中的magic函数做同样的事情。 我显然不要求任何人写出我的问题,但是如果有人可以给我有关如何启动它或示例代码的任何想法,将不胜感激! 我完全不知道该如何开始...