使用Octave进行矩阵除法的解释:
这里是Octave矩阵除法的正式描述。
http://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html
x / y
Right division. This is conceptually equivalent to the expression
(inverse (y') * x')'
But it is computed without forming the inverse of y'.
If the system is not square, or if the coefficient matrix is
singular, a minimum norm solution is computed.
这句话的意思是这两个应该是相同的:
[3 4]/[4 5; 6 7]
ans =
1.50000 -0.50000
(inverse([4 5; 6 7]') * [3 4]')'
ans =
1.50000 -0.50000
首先,要理解Octave矩阵除法不是可交换的,就像矩阵乘法不是可交换的一样。这意味着A / B不等于B / A。
1/[1;1]
ans =
0.50000 0.50000
[1;1]/1
ans =
1
1
一除以一个单值矩阵的结果是一:
1/[1]
ans = 1
一个由单值三构成的矩阵的倒数为0.33333。
1/[3]
ans = .33333
一个除以一个(1x2)矩阵:
1/[1;1]
ans =
0.50000 0.50000
Equivalent:
([1/2;1/2] * 1)'
ans =
0.50000 0.50000
如上所述,与指令一样,我们正在对向量进行范数计算。因此,您可以看到
[1;1]
是如何变成
[1/2; 1/2]
的。其中“2”来自向量的长度,“1”来自提供的向量。我们再做一个例子:
一个(1x3)矩阵的倒数:
1/[1;1;1]
ans =
0.33333 0.33333 0.33333
等价的:
([1/3;1/3;1/3] * 1)'
ans =
0.33333 0.33333 0.33333
如果其中一个元素是负数,会怎样呢?
1/[1;1;-1]
ans =
0.33333 0.33333 -0.33333
等价的:
([1/3;1/3;-1/3] * 1)'
ans =
0.33333 0.33333 -0.33333
现在你大概明白了,当你没有提供一个方阵时Octave正在做什么。要理解当你传递给Octave矩阵除法一个方阵时它正在做什么,你需要理解逆函数在做什么。
我已经手动归一化你的向量,如果你想让Octave来完成这个任务,你可以添加程序包来实现。我认为以下程序包将会执行我手动完成的向量归一化:
http://octave.sourceforge.net/geometry/function/normalizeVector.html
现在,您可以将除法转换为等效的乘法。阅读这篇关于矩阵乘法的文章,您可以回溯并弄清楚矩阵除法背后的原理。
http://www.purplemath.com/modules/mtrxmult2.htm