在 GNU Octave 中,矩阵除法是如何工作的?
而不是做
1./[1;1]
我不小心做到了
1/[1;1]
令我惊讶的是,这会产生:
[0.5, 0.5]
横向案例:
1/[1,1]
给出预期:
error: operator /: nonconformant arguments (op1 is 1x1, op2 is 1x2)
有人可以解释一下 [0.5, 0.5] 结果吗?
最佳答案
考虑以下示例:
>> A = [5 10];
>> B = [2 2];
如果要按元素除法,请使用 A ./B 且两个元素的矩阵大小相等,即如果 A 的大小为 m*n B 的大小必须为 m*n
>> A ./B
ans =
2.5000 5.0000
如果要逐个矩阵除法,请使用 A/B,其中元素 A 的矩阵大小为 m*n,B 为 q*n 或 m*n。/运算符尝试返回 x*y−1(即 Octave 音程格式的 x * pinv(y))。
>> A / B
ans = 3.7500
与
相同>> A * pinv(B)
ans = 3.7500
OCTAVE/MATLAB 中的 pinv() 函数返回矩阵的 Moore-Penrose 伪逆矩阵,而 inv() 函数返回矩阵的逆矩阵。
如果您对使用什么感到困惑,请使用 pinv()
如果您想进一步了解What is the difference between pinv and inv?
关于octave - GNU Octave 矩阵除法是如何工作的?出现意想不到的行为。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263932/