2012-04-24 17 views
1

最終的に積分の限界である変数qと関数のパラメータ化に役立つ変数bに依存する三重積分の関数を書こうとしています。しかし、このコードは機能していないし、私は何をすべきかについて完全にはわからない。私はおそらく、ネストされた関数にbの値を渡すために何かをすることを含むと思うが、私はかなりmatlabで新しいです、どんな助けてもらえます。引数を内部関数Matlabに渡す

function [r] = test1(q,u) 
b = u; 
r = quad(@(k)Inner(k),-0.5.*(1-b)-b-1,q); 

function [w] = Inner(k) 
w = zeros(1); 
for i = 1 : length(k); 
    w(i) = quad(@(n)InnerIntegral(n,b).*unifpdf(k(i)-n,-1,1),0,k(i)-1,k(i)+1); 
end; 



function [y] = InnerIntegral(n) 
y = zeros(1); 
for i = 1 : length(n); 
    y(i) = quad(@(m)unifpdf(n(i)-m, -b, b).*unifpdf(m,-0.5.*b,0.5.*b), n(i)-b,n(i)+b); 
end; 
end 
end 
end 

答えて

1

エディタの右側にある小さいオレンジの目盛りを見てください。私のコピーでは、1つ上をホバリングすると、「外部ループインデックス 'i'は子関数内に設定されています」

この関数の入力または予想される出力はどのようなものかわかりませんが、MATLABの混乱を避けるようにしてください。それは奇妙なスコープ規則を持っています。 iではなく、おそらくjの2番目のネストされた関数で別の変数を使用します。

関連する問題