MATLAB中的行向量右除法

MATLAB中的行向量右除法,matlab,vector,division,Matlab,Vector,Division,我将一个名为a的20x60矩阵除以一个名为B的1x60行向量。所以C=A/B,其中C是一个20x1向量 MATLAB在A/B中做什么?我从中找到了答案 如果A是具有m~=n的矩形m-by-n矩阵,B是具有n列的矩阵,则x=B/A返回方程组x*A=B的最小二乘解 但是,当我尝试C*B或B*C时,我得到了一个尺寸错误,为什么?正如您所说,输入命令C=a/B就是在方程C*B=a中求解C。如果您有以下系统(2而不是20,3而不是60,以保持简单) 对于第一个问题,Matlab关注这个问题并试图解决它。在

我将一个名为
a
的20x60矩阵除以一个名为
B
的1x60行向量。所以
C=A/B
,其中
C
是一个20x1向量

MATLAB在
A/B
中做什么?我从中找到了答案

如果
A
是具有
m~=n
的矩形m-by-n矩阵,
B
是具有
n
列的矩阵,则
x=B/A
返回方程组
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的自动性将不考虑外积的可能性。如果要执行演算,必须使用kronecker产品:

kron(C,B)
此示例的输出:

=[c1*b1 c1*b2 c1*b3]
 [c2*b1 c2*b2 c2*b3]
我希望这对你有帮助


干杯,Pablo

使用您在这里报告的维度的随机值矩阵,
C*B
是一个有效的表达式,可以成功计算。请提供更具体的代码,再现您实际遇到的问题。因为
*
是矩阵乘法运算符。因此,您只能将这类矩阵相乘:
[MxP]*[PxN]
,并获得一个矩阵
[MxN]
。所以这个算符是不可交换的。