Я пришел в мир матриц из мира петель (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
Возможно, это всего лишь синтаксический сахар, вот и все, но все же было бы полезно знать.