给定y和x的一组值,是否存在用于解决此问题的标准方法/函数?
对于一维变量y和x,似乎存在,但对于N-D变量y和x,我们将有一个A NxN矩阵和B一个Nx1向量。
我所看到的唯一解决方案假定y是一维的,这显然没有帮助。
目前,我唯一的解决方案是进行N ^ 2线性多项式拟合,以得到以下形式的系数集
y(j)= a_jk x(k)+ b_jk
,然后通过取b_jk的平均值获得向量B。我不认为这是解决问题的最佳方法。
答案 0 :(得分:1)
一种方法是使用最小二乘找到A和B以最小化
Q = Sum{ (A*x[i]+B - y[i])'*(A*x[i] + B - y[i])}
(这里'表示转置,我假设您有向量x [0] .. x [N-1]和y [0] .. y [N-1])
虽然您可以使用标准的线性最小二乘法求解器进行此操作,但这是另一种方法:
计算x的均值xbar和y的均值ybar,即
xbar = Sum{ x[i]}/N
ybar = Sum{ y[i]}/N
计算以下矩阵
C = Sum{ (x[i]-xbar)*(x[i]-xbar)'}
D = Sum{ (y[i]-ybar)*(x[i]-xbar)'}
计算A和B
A = D*inv(C)
B = A*xbar-ybar
请注意,只有C是可逆的,我们才能计算A。这意味着x []向量必须跨越它们所在的空间。如果没有,则A并不是唯一确定的。
上述配方解决了问题的证据不是那么有启发性;让我知道是否想看。
答案 1 :(得分:1)
克里斯·伦戈(Cris Luengo),的评论确实正确。函数mldivide
兼用作最小二乘解算器
如果A是m〜= n的矩形m×n矩阵,而B是m行的矩阵,则A \ B将最小二乘解返回到方程A * x = B < / p>
因此,如果您有方程式
y == A * x + B
然后,您首先必须从两边减去B
,然后应用mldivide
,所以类似
xhat = A\(y-B);