Matlab行向量除法计算原理咨询:为何指定向量相除结果为0.0939
Matlab中向量右除法的计算逻辑解析
在Matlab里,行向量之间的/是矩阵右除法,既不是逐元素除法(对应运算符./),也不是简单的元素求和后相除,其本质是求解线性方程组的最小二乘解,具体计算过程如下:
- 运算符本质:对于行向量
A和行向量B,A/B等价于(B'\A')'——先将两个行向量转置为列向量,执行矩阵左除法,再将结果转置回行向量。 - 最小二乘解计算:当执行
B'\A'时,实际是求解超定方程组B' * x = A'的最小二乘解(这里B'是8×1矩阵,A'是8×1向量,有8个方程但只有1个未知数,方程组无解,因此Matlab会计算最小二乘意义下的最优解)。
最小二乘解的公式简化后:- 先计算行向量
B与自身的点积(各元素平方和):1²+3²+4²+7²+9²+11²+13²+15² = 671 - 再计算行向量
B与A的点积(对应元素相乘后求和):1*1 +3*1 +4*1 +7*1 +9*1 +11*1 +13*1 +15*1 = 63 - 最终结果为两个值的商:
63 / 671 ≈ 0.0939,这就是你得到的结果。
- 先计算行向量
- 与其他除法的区别:
- 逐元素除法:
[1 1 1 1 1 1 1 1] ./ [1 3 4 7 9 11 13 15],得到的是每个位置元素相除的向量:[1, 1/3, 1/4, 1/7, 1/9, 1/11, 1/13, 1/15] - 求和后相除:
sum([1 1...])/sum([1 3...]) = 8/63 ≈ 0.1270,结果和矩阵除法完全不同。
- 逐元素除法:
内容的提问来源于stack exchange,提问作者Nirgarl
相关产品推荐
相关产品推荐

