次の式を計算しようとすると、
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) 
これを修正する方法を教えてください。
次の式を計算しようとすると、
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