我注意到一些关于integral2 的奇怪事实。这些可能是由于我在理解它的工作原理方面存在局限性。当我有特定的功能时,我在整合变量时遇到了一些困难。例如,看下面的代码:
function Output = prova(p,Y)
x = p(1);
y = p(2);
w = p(3);
z = p(4);
F1 = @(Data,eta_1,eta_2,x,y,w,z) F2(eta_1,eta_2,Data) .* normpdf(eta_1,x,y) .* normpdf(eta_2,w,z);
Output = integral2(@(eta_1,eta_2)F1(Y,eta_1,eta_2,0,1,10,2),-5,5,-5,5);
end
function O = F2(pp1,pp2,D)
O = pp1 + pp2 + sum(D);
end
在这种情况下,评估积分没有问题。但是如果我以这种方式更改代码,我会得到一些错误,尽管 F2 的输出完全相同:
function Output = prova(p,Y)
x = p(1);
y = p(2);
w = p(3);
z = p(4);
F1 = @(Data,eta_1,eta_2,x,y,w,z) F2(eta_1,eta_2,Data) .* normpdf(eta_1,x,y) .* normpdf(eta_2,w,z);
Output = integral2(@(eta_1,eta_2)F1(Y,eta_1,eta_2,0,1,10,2),-5,5,-5,5);
end
function O = F2(pp1,pp2,D)
o = sum([pp1 pp2]);
O = o + sum(D);
end
例如,如果 F2 有一些矩阵乘法,其中涉及我想要积分的“eta_1”和“eta_2”,问题就会增加。这个问题实际上使解决计算变得不可能,例如,我们必须积分出一个位于似然函数内部的变量 X(其计算可能需要一些内部循环,或 Sum,或涉及我们的变量 X 的 Prod)。解决办法是什么?