0

関数ハンドルを含むループを実行しようとしています。nに特定の値を使用すると、コードはうまく機能します。ただし、ループ内でコードを実行しようとすると、エラーが発生します。

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
4

1 に答える 1