内部矩阵尺寸必须一致

时间:2015-03-04 09:31:12

标签: matlab matrix

我有一个矩阵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

4 个答案:

答案 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]。因此,第二个例子的矩阵乘法失败。