1

我尝试运行以下代码:

F=@(x)mvnpdf([6 x],[0 0],[1 0;0 1]);
P=quad(F,12,100);

得到x2联合高斯分布从 12 到 100 的概率积分。但是matlab报这个错误:

X 和 MU 必须具有相同的列数。

这对我来说很奇怪,因为当我运行F(1),F(2)或类似的东西时它运行正确。

为什么我用quad积分mvnpdf函数会报错?

为什么quad给函数 F 的参数不是标量?

4

1 回答 1

1

这是因为quad将值向量传递给F,而不是单个值。您需要在您的 中处理它F,例如像这样

F = @(X)mvnpdf([repmat(6, size(X(:),1), 1) X(:)],[0,0],[1,0;0,1]);

我只是重复了数字 6 的次数,因为 vector 中有行X。请注意,它X必须是一个列向量,这就是为什么我将它显式转换为这样的原因X(:)。现在你可以写

F(1:100)

没有错误。

于 2012-10-02T11:11:48.327 回答