我从循环世界(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
也许,它只是语法糖,仅此而已,但知道仍然有用。