我现在将20x60的矩阵A
除以1x60的行向量B
。因此C = A/B
,其中C
是20x1的向量。
MATLAB在A/B
中做什么?我在mrdivide
如果
A
是具有m ~= n
的矩形m×n矩阵,并且B
是具有n
列的矩阵,则x = B/A
返回a方程组x*A = B
的最小二乘解。
但是当我尝试使用C*B
或B*C
时,出现尺寸错误,为什么?
答案 0 :(得分:0)
正如您所说,输入命令C = A/B
就是在方程C
中求解C * B = A
。如果您使用的是以下系统(为简单起见,请使用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自动执行将不会考虑外部乘积的可能性。如果要执行微积分,则必须使用kronecker产品:
kron(C,B)
此示例的输出:
=[c1*b1 c1*b2 c1*b3]
[c2*b1 c2*b2 c2*b3]
希望对您有帮助。
干杯,巴勃罗