5

我正在尝试在方程组中求解 m1,m2,m3,m4,使得:

y=(m1*x1)+(m2*x2)+(m3*x3)+(m4*x4)

在哪里:

x1=[x11,x12,x13...]
x2=[x21,x22,x23...]
x3=[x31,x32,x33...]
x4=[x41,x42,x43...]

y=[y1,y2,y3,y4,...]

我一直在尝试做:

m=numpy.linalg.lstsq(A,y)[0]

在哪里:

A = [[x11,x21,x31,x41],[x12,x22,x32,x42],.....]

但我的结果与在 Mat-lab 中进行的类似分析不匹配。

您可能看到的任何建议或问题都会非常有帮助!

谢谢。

4

1 回答 1

1

看来您正在A错误地构建矩阵。此外,np.linalg.lstsq似乎只接受一个2D数组 for A,这意味着您可以一次对一个变量进行最小二乘。尝试这个:

nvar = 4
one = np.ones(x1.shape)
A = np.vstack((x1,one,x2,one,x3,one)).T.reshape(nvar,x1.shape[0],2)

for i,Ai in enumerate(A):
    a = np.linalg.lstsq(Ai,y)[0]
    R = np.sqrt( ((y - Ai.dot(a))**2).sum() )
    print R
于 2013-08-04T15:12:31.650 回答