ループワールド(Cなど)からマトリックスワールドに入った
ベクトル/行列の個々のメンバーで関数を呼び出し、結果のベクトル/行列を返したいと思います。
これは私が現在それをしている方法です:
function retval = gauss(v, a, b, c)
for i = 1:length(v)
retval(i) = a*(e^(-(v(i)-b)*(v(i)-b)/(2*c*c)));
endfor
endfunction
使用例:
octave:47> d=[1:1000];
octave:48> mycurve=gauss(d, 1, 500, 100);
さて、MATLAB / Octaveに関するすべてのアドバイスは、次のように述べています。ループを使用していることに気づいたら、やめて、それを行うためのより良い方法を考えてください。
したがって、私の質問:ベクトル/行列の各メンバーで関数を呼び出し、明示的なループを使用せずに、結果を新しいベクトル/行列に一度に返すことはできますか?
それは私がこのようなものを探しているということです:
function retval = newfun(v)
retval = 42*(v^23);
endfunction
おそらく、それは単なる構文糖衣であり、それだけですが、それでも知っておくと便利です。