【发布时间】:2012-11-08 10:04:08
【问题描述】:
以下是我在matlab中写的一段代码,这里我想进行如下简单的数学运算[A][X]=[B],其中[X]是未知的。在我的情况下,我的 k 长度约为 1600000。所以我想要的只是获取数组中每个元素的 g1、g2 和 g3 的值。我已经尝试了以下
k31 = omega3./(d)
k32 = omega3_2./(d)
A = [2,1,5;-2,-1,-5];
X = [g1;g2;g3];
for ii = 1:length(k31)
B = [k31(ii); k32(ii)];
X = pinv(A).*B;
end
display(g1,g2,g3)
我使用的是伪逆,所以基本上我可以为每个 X 找到一个解决方案,并且我在那里进行了一些编辑......并且 x 是未知的,在数学上它可以完成,但我无法对其进行编码
另外我如何用 x 和 y 绘制 g1 g2 g3 的值,如下 scatter(x(1:end-1), y(1:end-1), 5, g1); scatter(x(1:end-1), y(1:end-1), 5, g2) 和 scatter(x(1:end-1), y(1:end-1), 5, g3)
【问题讨论】:
-
发生了什么,或者没有发生什么?你没有提到结果和预期的结果。
-
您的未知数 (3) 比等式 (2) 多。您要么需要找到另一个方程,要么进行最小二乘拟合。
-
这段代码没有意义...
A和最初的X根本不被使用...?此外,您在每次迭代时覆盖X,使循环的结果基本上等于X = pinv(R).*[k31(end); k32(end)];...? -
@TimN:最小二乘拟合是最接近设计矩阵行空间的解。
-
你不懂最小二乘法。它会为您提供代表使均方误差最小化的直线的值。