垂直尺寸不匹配(1x2 与 1x1)

vertical dimensions mismatch (1x2 vs 1x1)

提问人:panos stefanou 提问时间:11/17/2023 最后编辑:pmacfarlanepanos stefanou 更新时间:11/22/2023 访问量:32

问:

我正在尝试进行简单的替换

我的代码如下:

grad_f = @(x) [4*x(1).^3 - 8*x(2).*x(1) + 2*x(1) -2;-4*x(1).^2 + 8*x(2)];
x = [3;3]
grad_f(x)`

它给了我以下内容: 错误:垂直尺寸不匹配(1x2 与 1x1)

矩阵 倍频程

评论

0赞 pmacfarlane 11/21/2023
你可能至少应该提及(并标记)你正在使用的语言。
0赞 panos stefanou 11/22/2023
我正在用 Octave 写作......但是当我切掉减号和加号之间的空格时,我修复了它

答:

0赞 Cris Luengo 11/22/2023 #1

在方括号(连接运算符)内,用逗号或空格分隔的元素水平连接。这是一个不幸的选择,因为它会导致意外错误。始终与运算符周围的间距保持一致(要么从不使用它们,要么总是在两侧使用它们)将避免大多数这些意外错误。

例如:

[a - 2] % 1x1 array
[a -2]  % 1x2 array, same as [a, -2]
[a-2]   % 1x1 array

这是您的代码中发生的情况:

grad_f = @(x) [… + 2*x(1) -2; …];
                         ^^^

要么在减号运算符的两侧放置一个空格,要么在两边都放置一个空格。


上一个:速度和旋转问题

下一个:指定矩阵形状