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

问题描述 投票:0回答:1

我正在尝试做一个简单的替换

我的代码如下:

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)

matrix octave
1个回答
0
投票

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

例如:

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

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

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

可以在减号运算符两边加一个空格,或者两边都不加一个空格。

© www.soinside.com 2019 - 2024. All rights reserved.