我有一个矩阵A
和一个向量x
:
A
是50x30矩阵
x
是1x30向量
我希望将A
乘以x
,但每当我尝试z = A * x
时,我都会收到错误Inner matrix dimensions must agree.
但是当确定使用相同数量的列时,矩阵维度会同意?
我很困惑为什么会这样做:
A = rand(2,2);
x = [1;2];
A * x
然而这不起作用:
A = rand(2,2);
x = 1:2;
A * x
答案 0 :(得分:5)
转置第二个参数:
z = A * x.'
正如错误所暗示的那样 - 内部矩阵维度必须同意 - 你有
A = [50x30]
和x = [1x30]
,内部尺寸为 30 且 1 。
通过转置获得A = [50x30]
和x = [30x1]
,内部维度将 30 且 30 ,同意。
答案 1 :(得分:1)
在第一个例子中,x是2乘1.在第二个例子中,x是1乘2.
注意您在第一个示例中使用;(分号),在第二个示例中使用:(冒号)。您可以通过尺寸(x)验证两个示例的尺寸。
答案 2 :(得分:1)
为了将A
乘以右边的向量,向量必须为30
- by - 1
和 not 1
- by - 30
- 这就是你得到错误的原因。
解决
z = A * x.';
答案 3 :(得分:0)
x = [1;2];
创建列向量[1;2]
。相反,命令x = 1:2;
创建行向量[1 2]
。因此,第二个例子的矩阵乘法失败。