我有一個簡單的二次型函數。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