0
我想運行一個包含函數句柄的循環。如果我爲n使用任何特定值,代碼運行良好。然而,當我試圖在循環中運行代碼它給人的錯誤:循環中函數句柄的錯誤(Matlab)
Nonscalar arrays of function handles are not allowed; use cell
arrays instead.
我是比較新的MATLAB,所以想了幾個小時,我已經江郎才盡後...任何幫助將不勝感激。
的代碼如下
for m=1:N
for n=1:N
int(n) = @(w,s0,v,r,t) chfun_norm(s0,v,r,t,w(n)-(alpha+1)*1i)/(alpha^2 + alpha - w(n)^2 + 1i*(2*alpha+1)*w(n));
int(n) = @(w)int(w,s0,v,r,t);
g(n) = exp(1i*(b-log(s0))*w(n)-alpha*k(m)-r*t)*int(n)*pond(n);
g(n) = exp(-1i*2*pi/N*(n-1)*(m-1))*g(n);
end
y(m) = real(sum(g))*stepw;
end
編輯
我一直在使用電池陣列重新循環,但現在我收到以下錯誤
Undefined function 'mtimes' for input arguments of type 'function_handle'
下面是更新代碼:
y = zeros(N,1);
intCell = {zeros(N,1)};
gCell = {zeros(N,1)};
for m=1:N
for n=1:N
intCell{n} = @(w,s0,v,r,t) chfun_norm(s0,v,r,t,w(n)-(alpha+1)*1i)/(alpha^2 + alpha - w(n)^2 + 1i*(2*alpha+1)*w(n));
intCell{n} = @(w)intCell{n}(w,s0,v,r,t);
gCell{n} = exp(1i*(b-log(s0))*w(n)-alpha*k(m)-r*t)*intCell{n}*pond(n);
gCell{n} = exp(-1i*2*pi/N*(n-1)*(m-1))*g(n);
end
y(m) = real(sum(g))*stepw;
end
感謝您的回答。 Upvoted。我已經使用單元陣列重新構建了循環。但是我仍然遇到錯誤。如果您可以請指導我更進一步 – sets
我編輯我的答案對應於您的編輯,我會很高興接受您的答案。關於你實際想要計算的一些描述可能會有所幫助。 – freiform
解決。謝謝 – sets