Ich habe eine einfache quadratische Form-Funktion.Matlab Matrix innere Dimension muss übereinstimmen
function [y, grady] = quadobj(x)
global Q
y = x*Q*x';
if nargout > 1
grady = 2*Q*x;
end
Wenn ich einfach die quadratische Form in der Befehlszeile berechnen, funktioniert es.
>> [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
Aber wenn ich versuche, um die Funktion zu bewerten, erhalte ich einen Fehler
>> 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';
Warum ist das behavios auftritt? Es scheint mir, dass die Dimensionen so ausgerichtet sind, wie ich Zeile drei der quadratischen Formfunktion geschrieben habe. Bitte helfen Sie!
Sie [sollte wirklich nicht Globals verwenden] (http: // Stackoverflow .com/a/13006423/2627163), sehe meine Antwort für eine Alternative. – EBH