为什么这个多项式方程条件不好?
Why is this polynomial equation badly conditioned?
我有 1x1024 矩阵。所以我想估计一个多项式方程。
X= (0:1023)'
Y= acquired data. A 1024 element vector
然后我在 MATLAB 中尝试这个:
polyfit(x,y,5)
但是 MATLAB 给出了一个异常结果并带有警告。
Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the ...
我不明白我做错了什么?
更新
我得到了一堆这样的数字。
Y=
-0.0000000150
...
0.00001
...
0
...
0.17
X=0~255
polyfit(X,Y,4)
我得到了一个多项式,但它与原始曲线不匹配。
原始曲线和polyfit的曲线有匹配的选项吗?
此警告是因为您提供给 polyfit
的具有所需多项式次数的数据不合适。具体来说,您的数据中的可变性不足,因此您无法成功获得良好的拟合。因此,MATLAB 会向您发出警告,因为数据无法与您想要的次数多项式正确拟合。
解决这个问题的方法是要么获得更多点,以便获得所需的多项式次数,要么减少所需的多项式次数。
尝试小于 5...4、3 或者 2 的值:
coeff = polyfit(x, y, 4);
%// or
%coeff = polyfit(x, y, 3);
%coeff = polyfit(x, y, 2);
尝试每个度数,直到您不再收到警告。但是,没有实际数据,我只能推测出了什么问题,这是我最好的猜测。
问题可以归因于 polyfit
从 x
向量构建的系数矩阵的类型:Vandermonde matrix.
什么时候
x
向量的元素在大小上变化太大,
- 拟合多项式的次数太高,
你得到一个病态矩阵,相关的线性系统无法可靠求解。
在应用 polyfit
之前,先尝试居中并缩放 x
矢量,如 polyfit
帮助页面底部的建议:
Since the columns in the Vandermonde matrix are powers of the vector x
, the condition number of V
is often large for high-order fits, resulting in a singular coefficient matrix. In those cases centering and scaling can improve the numerical properties of the system to produce a more reliable fit.
(我的重点)
我有 1x1024 矩阵。所以我想估计一个多项式方程。
X= (0:1023)'
Y= acquired data. A 1024 element vector
然后我在 MATLAB 中尝试这个:
polyfit(x,y,5)
但是 MATLAB 给出了一个异常结果并带有警告。
Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the ...
我不明白我做错了什么?
更新
我得到了一堆这样的数字。
Y=
-0.0000000150
...
0.00001
...
0
...
0.17
X=0~255
polyfit(X,Y,4)
我得到了一个多项式,但它与原始曲线不匹配。 原始曲线和polyfit的曲线有匹配的选项吗?
此警告是因为您提供给 polyfit
的具有所需多项式次数的数据不合适。具体来说,您的数据中的可变性不足,因此您无法成功获得良好的拟合。因此,MATLAB 会向您发出警告,因为数据无法与您想要的次数多项式正确拟合。
解决这个问题的方法是要么获得更多点,以便获得所需的多项式次数,要么减少所需的多项式次数。
尝试小于 5...4、3 或者 2 的值:
coeff = polyfit(x, y, 4);
%// or
%coeff = polyfit(x, y, 3);
%coeff = polyfit(x, y, 2);
尝试每个度数,直到您不再收到警告。但是,没有实际数据,我只能推测出了什么问题,这是我最好的猜测。
问题可以归因于 polyfit
从 x
向量构建的系数矩阵的类型:Vandermonde matrix.
什么时候
x
向量的元素在大小上变化太大,- 拟合多项式的次数太高,
你得到一个病态矩阵,相关的线性系统无法可靠求解。
在应用 polyfit
之前,先尝试居中并缩放 x
矢量,如 polyfit
帮助页面底部的建议:
Since the columns in the Vandermonde matrix are powers of the vector
x
, the condition number ofV
is often large for high-order fits, resulting in a singular coefficient matrix. In those cases centering and scaling can improve the numerical properties of the system to produce a more reliable fit.
(我的重点)