在MATLAB中把两个参数放入UnifDist

在MATLAB中把两个参数放入UnifDist,matlab,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) 您能告诉我如何解决这个问题吗?这里的问题如下: 函数y=fun(x)应该接受向量参数x并返回向量结果y,即在x的每个元素处计算的被积函数 unipdf似乎满

试图计算以下表达式

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) 

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

这里的问题如下:

函数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

所以为了澄清这一点,我需要一个包装函数,它接受参数$n$,并吐出一个向量本身?@RedRover:是的。我已经用一个示例代码更新了我的答案。非常感谢!