2012-04-24 39 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

看看編輯器右側的小橙色刻度線。在我的副本中,懸停在一個表示「外部循環索引'我'被設置在一個子功能。」

我不知道這個函數的輸入或期望的輸出應該是什麼,但是你應該儘量避免混淆MATLAB。它有很奇怪的範圍規則。在第二個嵌套函數中使用不同的變量,可能是j而不是i