次の式を計算しようとすると、
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