Допустим, у меня есть функция, которая может вычислять один выход из одного входа, например,
function y = sqrt_newton(x)
y = x ./ 2;
yo = y;
y = 0.5.*(y + x ./ y);
while abs(y - yo) > eps * abs(y)
yo = y;
y = 0.5.*(y + x ./ y);
end
end
Я хотел бы иметь возможность применить эту функцию к векторному входу, скажем sqrt_newton(2:9)
, как со встроеннымв функции.Каков наилучший способ добиться этого с помощью условия в начале цикла или некоторого предложения if внутри?Я хотел бы избежать написания дополнительной функции в качестве обертки, чтобы просто перебрать входной вектор, если это вообще возможно.
Мое текущее громоздкое решение
Что ясделать до сих пор:
Я должен сначала расширить входные данные до того же размера (используя finargsz из набора инструментов финансы, но если вы знаете другую основную функцию, которая делает то же самое,это было бы здорово)
запишите форму, используя size
deal
входные данные
цикл через все входные элементы
reshape
выход
Кажется, что функция numel
устраняет необходимостьвсе это тяжелое занятие, но дополнительные комментарии будут приветствоваться.