线性逼近算法的matalb程序
时间: 2023-06-17 20:06:31 浏览: 101
下面是线性逼近算法的 Matlab 程序示例:
```matlab
% 假设要拟合的函数为 y = 2x + 1
% 生成训练数据
x = linspace(0, 1, 100);
y = 2 * x + 1 + randn(size(x)) * 0.1;
% 初始化模型参数
w = randn(2, 1);
% 定义线性模型
f = @(x, w) w(1) * x + w(2);
% 定义损失函数
loss = @(y, y_hat) sum((y - y_hat).^2);
% 训练模型
lr = 0.1; % 学习率
epochs = 100; % 迭代次数
for epoch = 1:epochs
y_hat = f(x, w);
grad = [sum((y_hat - y) .* x); sum(y_hat - y)];
w = w - lr * grad;
fprintf('epoch %d, loss %.4f\n', epoch, loss(y, y_hat));
end
% 绘制拟合曲线和原始数据
plot(x, y, '.');
hold on;
plot(x, f(x, w), 'r');
legend({'Original Data', 'Fitted Curve'});
```
该程序使用随机梯度下降算法训练线性模型,最终得到的拟合曲线与原始数据如下图所示:
![linear-regression-matlab](https://img-blog.csdn.net/20180512225033151?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jsb2c5OTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/50)
阅读全文