2012-04-21 7 views
2

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

ここでの問題は、次requirementある:

関数y =楽しさ(x)は、ベクトル引数xを受け入れ、ベクター結果y、xの各要素で評価積分を返すべきです。

unipdfがこの要件を満たしているようですが、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 
+0

あなたはベクトル引数xを受け入れラッパー関数を記述する必要があり、この問題を解決するには、一体型インナーはquad機能を使用して、結果のベクトルを返す評価します引数$ n $をとりベクトル自体を吐き出す? –

+0

@RedRover:はい。私はサンプルコードで私の答えを更新しました。 – Romeo

+0

ありがとうございました! –

関連する問題