【问题标题】:Inner matrix dimensions must agree内部矩阵尺寸必须一致
【发布时间】:2015-03-04 09:31:11
【问题描述】:

我有一个矩阵A 和一个向量x

A 是一个 50x30 矩阵

x 是一个 1x30 向量

我想将Ax 相乘,但每当我尝试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

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    转置第二个参数:

    z = A * x.'
    

    正如错误提示 - 内部矩阵尺寸必须一致 - 你有 A = [50x30]x = [1x30],内部尺寸分别为 301

    通过转置你得到A = [50x30]x = [30x1],那么内部尺寸是3030,一致。

    【讨论】:

      【解决方案2】:

      在您的第一个示例中,x 是 2 x 1。在第二个示例中,x 是 1 x 2。

      请注意,您在第一个示例中使用了 ;(分号),在第二个示例中使用了 :(冒号)。您可以通过 size(x) 来验证这两个示例的尺寸。

      【讨论】:

        【解决方案3】:

        为了将A 与右侧的向量相乘,该向量必须是30-by-1 并且不是 1-by-30 - 这是您收到错误的原因。 解决

        z = A * x.';
        

        【讨论】:

          【解决方案4】:

          x = [1;2]; 创建列向量[1;2]。相反,命令x = 1:2; 创建一个行向量[1 2]。因此,第二个示例的矩阵乘法失败。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-11-04
            • 2012-07-12
            • 2011-12-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多