Matlab分区,无法取回答案
问题描述:
H = [1 2; 3 4; 5 6; 7 8; 9 10; 11 12; 13 14; 15 16];
X = [7; 9];
Y = H*X;
H1 = Y/X;
这是我的代码。正如你所看到的,我试图恢复H值。但是,它给了我别的东西。我试图使用inv(),但这是不可能的,因为X不是方阵。Matlab分区,无法取回答案
答
您不能通过划分秩1的值来得到秩2的值。系统不受约束。
mrdivide
和pinv
(用于伪逆)都可以用来获得a解决方案的系统。因为有多种解决方案,所以不一定就是你开始使用的解决方案。相反,您会得到一个“最简单”的解决方案,无论是最低基数还是最低2范数,取决于您使用的是mrdivide
还是pinv
。
这里,pinv
文档页面可能比我更精确地解释它。只要注意它正在讨论X\Y
,而不是Y/X
:
如果A比列多行满秩的不是,那么超定最小二乘问题
minimize norm(A*x-b)
没有一个独特的解决方案。无限许多解决方案中有两个是
x = pinv(A)*b
和
y = A\b
这两个是由事实来区分这
norm(x)
比任何其他解决方案的规范小和y
具有尽可能少的非零分量。