2

次の式を計算しようとすると、

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) 

これを修正する方法を教えてください。

4

1 に答える 1

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
于 2012-04-21T21:43:47.147 に答える