有没有标准的方法或函数来解决给定y和x值集的问题?对于一维变量y和x,似乎有,但对于N维变量y和x,我们将有一个NxN矩阵A和一个Nx1向量B。我看到的唯一解决方案是假设y是一维的,这显然没有帮助。目前,我的唯一解决方案是进行N^2个线性多项式拟合,以获取形式为y(j) = a_jk x(k) + b_jk的系数集,然后通过取b_jk的平均值来得到向量B。我不确定这是问题的最佳解决方案。
一种方法是使用最小二乘法来找到A和B,以使其最小化
Q = Sum{ (A*x[i]+B - y[i])'*(A*x[i] + B - y[i])}
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
Cris Luengo在评论中说得没错。函数mldivide
同时也是最小二乘求解器。
如果A是一个矩形的m×n矩阵,其中m≈n,并且B是一个有m行的矩阵,则A\B返回方程组A*x=B的最小二乘解。
因此,如果您有以下方程:
y == A * x + B
那么你首先需要从两边减去B
,然后应用mldivide
,大致如下:
xhat = A\(y-B);
[x y z]
是N-D变量,在三维世界中。它们是3个独立于彼此的1D变量,因此每个维度都有一个。 - Ander Biguri