在 MATLAB 中按行向量右除
Right division by row vector in MATLAB
我正在将名为 A
的 20x60 矩阵除以名为 B
的 1x60 行向量。所以 C = A/B
,其中 C
是一个 20x1 向量。
MATLAB 在 A/B
中做什么?我在 mrdivide
中找到了答案
If A
is a rectangular m-by-n matrix with m ~= n
, and B
is a matrix with n
columns, then x = B/A
returns a least-squares solution of the system of equations x*A = B
.
但是当我尝试 C*B
或 B*C
时出现尺寸错误,为什么?
正如您所说,输入命令 C = A/B
您正在求解方程 C * B = A
中的 C
。如果您有以下系统(为简单起见,2 而不是 20 和 3 而不是 60)。
对于第一个问题,Matlab看问题并尝试解决。在某些情况下,系统不会有解决方案。在这种情况下,Matlab 计算其中一种组合,求解最多的方程(如 mathworks 页面上的示例所示)。
关于为什么会出现尺寸错误的第二个问题:
b = [b1 b2 b3]
A = [a11 a12 a13]
[a21 a22 a23]
C = [c1]
[c2]
MatLab 将处理您尝试对向量执行的操作,因为它会自动将 C*B
识别为外积。
矩阵的B*C
乘积将不起作用,因为matlab自动算法不会考虑外积的可能性。如果您想执行微积分,则必须使用克罗内克积:
kron(C,B)
此示例的输出:
=[c1*b1 c1*b2 c1*b3]
[c2*b1 c2*b2 c2*b3]
希望对您有所帮助。
干杯,巴勃罗
我正在将名为 A
的 20x60 矩阵除以名为 B
的 1x60 行向量。所以 C = A/B
,其中 C
是一个 20x1 向量。
MATLAB 在 A/B
中做什么?我在 mrdivide
If
A
is a rectangular m-by-n matrix withm ~= n
, andB
is a matrix withn
columns, thenx = B/A
returns a least-squares solution of the system of equationsx*A = B
.
但是当我尝试 C*B
或 B*C
时出现尺寸错误,为什么?
正如您所说,输入命令 C = A/B
您正在求解方程 C * B = A
中的 C
。如果您有以下系统(为简单起见,2 而不是 20 和 3 而不是 60)。
对于第一个问题,Matlab看问题并尝试解决。在某些情况下,系统不会有解决方案。在这种情况下,Matlab 计算其中一种组合,求解最多的方程(如 mathworks 页面上的示例所示)。
关于为什么会出现尺寸错误的第二个问题:
b = [b1 b2 b3]
A = [a11 a12 a13]
[a21 a22 a23]
C = [c1]
[c2]
MatLab 将处理您尝试对向量执行的操作,因为它会自动将 C*B
识别为外积。
矩阵的B*C
乘积将不起作用,因为matlab自动算法不会考虑外积的可能性。如果您想执行微积分,则必须使用克罗内克积:
kron(C,B)
此示例的输出:
=[c1*b1 c1*b2 c1*b3]
[c2*b1 c2*b2 c2*b3]
希望对您有所帮助。
干杯,巴勃罗