在MATLAB中按行向量右除

时间:2018-09-26 10:02:07

标签: matlab vector division

我现在将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*BB*C时,出现尺寸错误,为什么?

1 个答案:

答案 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]

希望对您有帮助。

干杯,巴勃罗