X = [1; 2; 3]
x =
1
2
3
Y = [4; 5; 6]
y =
4
5
6
X \ý
ans =
2.2857
Matlab是如何找到结果的? (我搜索过许多论坛,但我不明白他们告诉了什么。我想知道给出这个结果的算法。)
答案 0 :(得分:5)
来自\
的MATLAB文档:
如果A是具有M-by-N
的{{1}}矩阵,B是具有M个分量的列向量,或具有多个此类列的矩阵,则M < or > N
是最小二乘法中的解对欠定或超定方程组X = A\B
的意义。
此处您的系统未被过度/过度确定。由于两者都有3行。因此,您可以将您的等式可视化为:
A*X = B
现在,由于矩阵不是方形,它将使用SVD计算伪逆。因此,
xM=y
M=inv(x)*y
您将获得M的值为2.2857。
另一种解释是:它将为您提供M=pinv(x)*y;
在最小二乘意义上的解决方案。您可以按如下方式验证:
xM=y
这将为您提供M = 2.2857的值。
您可以随时在MATLAB命令窗口中执行M=lsqr(x,y)
以获取更多信息。
建议您查看有关最小二乘和伪逆的更多详细信息。
答案 1 :(得分:-1)
本文档应解释
http://www.mathworks.com/help/matlab/ref/mrdivide.html
以下是算法的链接
http://www.maths.lth.se/na/courses/NUM115/NUM115-11/backslash.html
您可以更轻松地在matlab中查看源代码。 (我没有本地的所以我无法检查,但matlab中有很多matlab函数的来源)