Is left divison faster than polyfit(x, y, 1)?
3 次查看(过去 30 天)
显示 更早的评论
In linear regression, results from two approach are the same.
>> x = 1:10;
>> y = x * 2 + randn(1, 10);
>> b = [ones(1, 10); x]' \ y'
b =
-0.7021
2.2412
>> p = polyfit(x, y, 1);
p =
2.2412 -0.721
I can see the implementation of `polyfit` by typing `edit polyfit`. However, I can't see the built-in function `ldivide`
0 个评论
采纳的回答
Jan
2017-1-9
There is some overhead in polyfit due to the error handling. Checking the inputs is a really good idea, but if you are absolutely sure that the inputs are correct, this can save some time:
function p = fPolyFit(x, y, n)
x = x(:);
V = ones(length(x), n + 1); % Vandermonde matrix
for j = n:-1:1
V(:, j) = V(:, j + 1) .* x;
end
[Q, R] = qr(V, 0); % Solve least squares problem
p = transpose(R \ (transpose(Q) * y(:)));
And if you have to solve this with the same x and different y, storing the Vandermonde matrix can accelerate the code again.
0 个评论
更多回答(1 个)
Walter Roberson
2017-1-9
If I recall correctly, polyfit creates a vandermode matrix and uses \ with it, so polyfit cannot be faster than \
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Polynomials 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!