我尝试运行以下代码:
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
函数时,为什么会出错。?
为什么赋予函数F的参数quad
不是标量?
答案 0 :(得分:1)
这是因为quad
将值向量传递给F
,而不是单个值。您需要在F
处理此问题,例如像这样
F = @(X)mvnpdf([repmat(6, size(X(:),1), 1) X(:)],[0,0],[1,0;0,1]);
我简单地重复了数字6,因为向量X
中有行。请注意,X
必须是列向量,这就是我X(:)
将其明确转换为此类的原因。现在你可以写
F(1:100)
没有收到错误。