我有一个简单的二次型函数。Matlab矩阵内维必须一致
function [y, grady] = quadobj(x)
global Q
y = x*Q*x';
if nargout > 1
grady = 2*Q*x;
end
当我只是在命令行计算二次形式,它的工作原理。
>> [1 1 1]*Q*[1 1 1]'
ans =
-2.5977
>> Q
Q =
-1.0000 -0.0731 0.3043
-0.0731 -1.0000 -0.0300
0.3043 -0.0300 -1.0000
但是当我尝试计算函数,我得到一个错误
>> quadobj([1 1 1])
Error using *
Inner matrix dimensions must agree.
Error in quadobj (line 3)
y = x*Q*x';
3 y = x*Q*x';
这是为什么behavios出现?在我看来,这些维度按照我写出的二次形式函数的三行的方式排列。请帮忙!
你[真的不应该使用全局变量(HTTP://计算器.com/a/13006423/2627163),请参阅我的答案寻找替代方案。 – EBH