在MATLAB中将两个参数放入UnifDist中

时间:2012-04-21 20:22:48

标签: matlab

尝试计算以下表达式

quad(@(n)quad(@(m)unifpdf(m-n,0,1),-10,10),-10,10)

但我收到一条消息说:

??? Error using ==> minus
Matrix dimensions must agree.

Error in ==> @(m)unifpdf(m-n,0,1) 

你能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这里的问题是以下requirement

  

函数y = fun(x)应接受向量参数x并返回向量结果y,在x的每个元素处计算被积函数。

unipdf似乎满足此要求,但quad本身并非如此。

要解决此问题,您需要编写一个包含向量参数x的包装函数,使用quad函数计算内部积分,并返回结果向量:

function [r] = Test()
    r = quad(@(n)InnerIntegral(n),-10,10);
end

function [y] = InnerIntegral(n)
    y = zeros(size(n));
    for i = 1 : length(n)
        y(i) = quad(@(m)unifpdf(m - n(i), 0, 1), -10, 10);
    end;
end