假设我有一个矩阵
其中变量是通道信息,例如假设、、和。考虑典型的最小二乘问题
然而,矩阵是胖的,因此是不可逆的。我无法获得或,它们将为零。我可以使用正则化并优化联合最小二乘和最小范数问题,但这并没有给我相同的和。有没有办法解决这个问题?
我尝试将所有接收到的向量堆叠到矩阵和执行相同操作以使矩阵变胖。但是,由于的结构,它仍然不可逆。有谁知道如何解决这个问题?我可以根据从正则化解决方案中获得的信息恢复参数的解决方案吗?
假设我有一个矩阵
其中变量是通道信息,例如假设、、和。考虑典型的最小二乘问题
然而,矩阵是胖的,因此是不可逆的。我无法获得或,它们将为零。我可以使用正则化并优化联合最小二乘和最小范数问题,但这并没有给我相同的和。有没有办法解决这个问题?
我尝试将所有接收到的向量堆叠到矩阵和执行相同操作以使矩阵变胖。但是,由于的结构,它仍然不可逆。有谁知道如何解决这个问题?我可以根据从正则化解决方案中获得的信息恢复参数的解决方案吗?
对于线性方程组,最小二乘解总是很好定义。
在您的情况下,这是未确定的,这意味着线性方程组有很多解。
最小二乘解具有很好的特性,它还最小化了解的范数(最小范数解),因此它是明确定义的。
在实践中,为了求解这个方程,您需要使用pinv()
MATLAB 中的函数。
此函数使用的Moore Penrose 伪逆矩阵求解方程:
x = pinv(A) * b
它基本上使用奇异值分解 (SVD)分解矩阵,使得并重建矩阵其中的任何非零元素求逆的结果。
用户@percusse 说:
你只需要 A\b
您不应该将 pinv 用于线性系统解决方案,这就是我的意思。不仅效率低,而且不准确。没有唯一的解决方案,因此您至少不能谈论。
反斜杠运算符针对所有可能的线性 eq 集进行了优化。试试吧。
由于非平凡零空间,欠定系统没有最小二乘解。反正没关系。
所以,要把事情说清楚。
最小二乘解总是存在的,它也是最小范数解。
即,从集合有一个唯一的使得。
例如:
for ii = 1:1e12
numRows = 3;
numCols = 27; %<! Must be bigger than 'numRows' for Under Determined System
mA = randn([numRows, numCols]);
vB = randn([numRows, 1]);
vXLs = pinv(mA) * vB;
vX = mA \ vB;
if(norm(vXLs) >= norm(vX))
keyboard();
end
if(mod(ii, 1e4) == 0)
disp(['Iteration Number - ', num2str(ii)]);
end
end
评论:
\
运算符慢得多。如果您正在寻找任何解决方案,请使用\
. 如果您正在寻找欠确定系统的最小二乘解决方案(最小二乘解决方案始终是最小范数解决方案),您需要使用该pinv()
功能。\
- The World's Simpleest Impossible Problem 的帖子。有没有办法解决这个问题
不,不是。拥有这样一个格式错误的原因观察值矩阵只是因为您没有更多信息。你不能从任何地方产生信息。
可以观察到,如果,因为是非方阵。因此逆不能存在。
观察到由于非独立列,伪逆不存在。
解决该问题的唯一方法是在信号上引入其他条件,例如稀疏性。如果有 2 个或更少的非零系数,则有一个可能的解决方案。
这意味着您将有一个非唯一的解决方案或冗余。在您的公式中,是完全免费的,而是一个偏移参数。您可以缩小矩阵并获得满秩部分以消除不受约束的部分。
在您的示例中,解决方案是
您有一个退化的情况,其中一个变量是完全自由的,但类似的问题在具有过度驱动的机械手的机器人技术中很常见,等等,您在所有可能的解决方案中对其进行了优化。