我知道此问题之前已经以一维形式提出(请参阅quad with mvnpdf involves vector in MATLAB),但我似乎无法将此用于2D案例。我想评估
integrand = @(x1,x2) mvnpdf([x1,x2],[0,0],[1,0;0,1]);
integral2(integrand,-10,10,-10,10)
但收到错误
X and MU must have the same number of columns.
我知道我需要指定integrand函数来执行逐元素操作,但我的尝试是徒劳的。任何帮助将不胜感激......
答案 0 :(得分:2)
尝试以下方法:
integrand = @(x1, x2) reshape(mvnpdf([x1(:), x2(:)],[0,0],[1,0;0,1]), size(x1));
integral2
的Matlab文档指出:
所有输入函数必须接受数组作为输入和操作 按元素。函数Z = FUN(X,Y)必须接受数组X和Y. 相同的大小并返回一组相应的值。
例如,对于上述情况,integral2
将两个14乘14矩阵传递给integrand
。 x(:)
从integral2
传递的矩阵中生成一维向量。这是为了向mvnpdf
提供两个列向量,这在本例中是预期的。 mvnpdf
然后返回一个密度值的列向量,必须对其进行重新整形(使用reshape
),以使尺寸符合integral2
预期的方式。