Matlab: положить сумму в функцию - PullRequest
2 голосов
/ 11 марта 2020

Я хотел бы аппроксимировать числовые данные функцией:

f = @(a0,xdata) a0(1).*xdata + ... + a0(n) .* xdata.^n

Как я могу это сделать, поскольку a для l oop не работает в функции? Я знаю, что есть внутренняя полиномиальная функция, но, так как я мог бы хотеть расширить сумму до нецелых показателей, я хочу написать свою собственную функцию.

1 Ответ

7 голосов
/ 11 марта 2020
f = @(a0,xdata) sum(a0 .* xdata.^(1:length(a0)));

Если вы настаиваете на том, чтобы написать это как анонимную функцию, но я бы рекомендовал написать это как функцию на нескольких строках с телом функции:

function out = f(a0,xdata)
    exponents = 1:length(a0);
    out = sum(a0 .*xdata .^ exponents);
end
...