0

さて、このコードでベクトル出力を作成しようとしました。ベクトル形式で取得する必要がある結果の関数

  function [smthOut] = myErf(start, wstep, final) 

     for k = start:wstep:final 
        error_func = 2/sqrt(pi) * erfTaylor(k);
        smthOut(final/wstep) = error_func;
        disp(['ON x=', num2str(k), ' RES IS f= ',  num2str(error_func)]);
     end;

  end

しかし、出力は次のようになります

>> s = myErf(0, 0.2, 2)
ON x=0 RES IS f= 0
ON x=0.2 RES IS f= -0.0029732
ON x=0.4 RES IS f= -0.022959
ON x=0.6 RES IS f= -0.073171
ON x=0.8 RES IS f= -0.1606
ON x=1 RES IS f= -0.28568
ON x=1.2 RES IS f= -0.44374
ON x=1.4 RES IS f= -0.62745
ON x=1.6 RES IS f= -0.82906
ON x=1.8 RES IS f= -1.042
ON x=2 RES IS f= -1.2614

s =

  Columns 1 through 8

         0         0         0         0         0         0         0         0

  Columns 9 through 10

         0   -1.2614

何を着ているの?修正方法は?ありがとう!

4

1 に答える 1

1

は一定であるためfinal/wstep(2/0.2 = 10)、ループの反復ごとに、配列の同じフィールドが結果 (つまりsmthOut(10)) で埋められます。

次のようなものを試すことができます

function [smthOut] = myErf(start, wstep, final) 

   cnt = 1;
   for k = start:wstep:final 
      error_func = 2/sqrt(pi) * erfTaylor(k);
      smthOut(cnt) = error_func;
      disp(['ON x=', num2str(k), ' RES IS f= ',  num2str(error_func)]);
      cnt = cnt + 1;
   end;

end
于 2013-02-19T18:25:39.203 に答える