硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 82|回复: 1
收起左侧

[信号与系统] 最小二乘法拟合数据

[复制链接]

160

主题

795

回帖

1290

积分

至尊会员

积分
1290
QQ
发表于 昨天 18:40 | 显示全部楼层 |阅读模式
本帖最后由 会飞的猪_2020 于 2026-11-1 18:40 编辑

线性时不变系统,得到一组离散的点,可以使用最小二乘法去拟合,也是最简单最基础的做系统辨识的手段。
一个系统的输出函数是y(k)。(代表k时刻的点,是离散的)

那么我们假设一个多项式称之为y_hat(k) 用于拟合数据,hat是帽子的意思,一般代表在控制或者信号处理里面代表预测值。

y_hat(k) = a1 + a2*k + a3 * k^2 + .. + an*k^(n-1)

我们用这个式子来代表不同时刻k的预测值。

假设我们能找到一组{a1,a2,..,an}的参数,使得这个y(k)-y_hat(k)很小,那么我们就找到了这个拟合的多项式。

怎么求这个参数呢?我们令误差的平方和的导数为0就行。
当然导数为0可能是局部极大值,也可能是局部极小值。可能是最小值,可能是最大值。这个是一个凸优化的问题。对于工程师来说严格证明比较复杂。。

结论就是这个东西不用担心,是最小值。
如果能求出这个解就是最小值,而且是全局最小值。。

怎么计算的过程也比较麻烦,工程师记住结论就行,计算过程现在可以问deepseek。

下面是给deepseek的提示词,开深度思考:
帮我用markdown格式把最小二乘法拟合中的矩阵计算过程给写出来,我的编辑时候公式不是严格按照LaTeX语法写的,你写的时候公式要用LaTeX语法表示。

一个系统的输出函数是y(k)。(代表k时刻的点,是离散的)
那么我们假设一个多项式称之为y_hat(k) 用于拟合数据,hat是帽子的意思,一般代表在控制或者信号处理里面代表预测值。
y_hat(k) = a1 + a2*k + a3 * k^2 + .. + an*k^(n-1)
我们构造一个误差方程:y(k)-y_hat(k)
也就是y(k) - (a1 + a2*k + a3 * k^2 + .. + an*k^(n-1))

这个写起来,计算起来很麻烦,我们用矩阵表示。
令θ 的转置是一个1Xn的行向量 [a1,a2,a3 .. an]
令φT(k) 是一个1xn的行向量[1 k k^2 ... k^n-1 ]

则误差方程 e(k,θ) = y(k) - φT(k) θ
把k=1到k=N时刻的误差都加起来称之为E
把k=1到k=N时刻的输出y(k)加起来称之为Y
把k=1到k=N时刻的输出φ(k)加起来称之为Φ
则E=Y-Φθ
我们可以得到误差的平方和就是E的转置乘以E
经过一系列计算可以得到J(θ)=YTY-2YTΦθ +θTΦTΦθ    (你计算过程不要省略)
J(θ)的导数就是:

deepseek最后给出的漂亮的公式就是下面这几张图片了,如果有不懂的计算过程,继续深入问deepseek就行了。
1.png


2.png
3.png
4.png
5.png

对于工程师来说,利用误差和等于零就行了。在最后的公式中只有θ是未知量,其余都是已知量。
6.png
7.png
8.png


模型的阶数怎么确定?因为这个是比较基础的方法,所以随便搞一个,看看后续准不准。。不准的话就加阶数。
因为它是基础方法,所以有着各种各样的不足,比如把噪声过拟合了之类的。
不过能把它大概掌握了,也是学习后续其他拟合方法的必经之路。












回复

使用道具 举报

160

主题

795

回帖

1290

积分

至尊会员

积分
1290
QQ
 楼主| 发表于 昨天 18:44 | 显示全部楼层
当然上面的证明方法写的不严谨,为什么是全局最小值没有涉及。

Y是采集的点是已知的,模型阶数是自己设计的,所以Φ也是已知的,就只有θ是未知的。所以θ是可以求的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-11-2 22:42 , Processed in 0.134040 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表