B*****e 发帖数: 91 | 1 函数(向量)F是 函数(向量)A,B,C的线性组合
F = a*A + b*B + c*C
a,b,c是系数。
现在已知几组 a,b,c和相应的F,如何拟合出来A,B,C。
惭愧啊,以前学的都交还给老师了。有包子。 | w**a 发帖数: 1024 | 2 F1 = a1* A + b1 *B + c1*C
F2 = a2* A + b2 *B + c2*C
...
Fn = an*A + bn* B + cn* C
可以写成矩阵方程
[F1 F2, ..., Fn] = [A B C]* [ a1 a2 ... an
b1 b2 ... bn
c1 c2 ... cn]
然后求逆
就可以解出来
[A B C] 矩阵
【在 B*****e 的大作中提到】 : 函数(向量)F是 函数(向量)A,B,C的线性组合 : F = a*A + b*B + c*C : a,b,c是系数。 : 现在已知几组 a,b,c和相应的F,如何拟合出来A,B,C。 : 惭愧啊,以前学的都交还给老师了。有包子。
| B*****e 发帖数: 91 | 3 多谢!包子已转!
如果只有3组abc,求逆,ABC是确定性的。
如果有多组abc,如何拟合出最优的ABC,matlab有现成的函数么?
【在 w**a 的大作中提到】 : F1 = a1* A + b1 *B + c1*C : F2 = a2* A + b2 *B + c2*C : ... : Fn = an*A + bn* B + cn* C : 可以写成矩阵方程 : [F1 F2, ..., Fn] = [A B C]* [ a1 a2 ... an : b1 b2 ... bn : c1 c2 ... cn] : 然后求逆 : 就可以解出来
| w**a 发帖数: 1024 | 4 如果abc的个数很多,就变成最小二乘之类的问题了
【在 B*****e 的大作中提到】 : 多谢!包子已转! : 如果只有3组abc,求逆,ABC是确定性的。 : 如果有多组abc,如何拟合出最优的ABC,matlab有现成的函数么?
| w**a 发帖数: 1024 | 5 [F1 F2, ..., Fn] = [A B C]* [ a1 a2 ... an
b1 b2 ... bn
c1 c2 ... cn]
假设
FF = [F1 F2, ..., Fn] ;
XX = [A B C];
MM = [ a1 a2 ... an
b1 b2 ... bn
c1 c2 ... cn]
那么:
FF = XX* MM
如果abc很多个,那么上面的方程就不是方阵,不过你可以通过转置 MM,
FF*MM' = XX* (MM*MM')
其中MM' 是MM的转置。
然后求出 方阵(MM*MM') 的逆矩阵, 假设是 YY 吧,即
YY = inv ( MM*MM');
inv 是MATLAB 矩阵求逆的函数。
最后得到XX:
XX = FF*MM'*YY;
还有一个小问题: 就是实际上 (MM*MM') 可能是奇异的,你可能需要加一个damping
factor e^2 ,然后求解
YY = inv ( MM*MM' + e^2 *I );
这里I 是和 MM*MM' 一样大小的单位矩阵。
e^2 是正数,可以取的很小。一般来说 e^2越大,解越光滑。
【在 B*****e 的大作中提到】 : 多谢!包子已转! : 如果只有3组abc,求逆,ABC是确定性的。 : 如果有多组abc,如何拟合出最优的ABC,matlab有现成的函数么?
|
|