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]
。所以这个算符是不可交换的。