2017-05-18 14 views
0

Ich möchte ein System von linearen Gleichheiten des Typs Ax = b+u lösen, wobei A und bekannt sind. Ich habe eine Funktion in MATLAB wie folgt aus:Keine Ausgabe während der Verwendung von "gmres" in Matlab

x = @(u) gmres(A,b+u); 

Dann habe ich fmincon, wo ein Wert für u dieser Ausdruck gegeben und x berechnet. Zum Beispiel

J = @(u) (x(u)' * x(u) - x^*)^2 

und

[J^*,u] = fmincon(J,...); 

withe die Punkte als Matrizen und Vektoren für die Gleichheiten und Ungleichheiten. Mein Problem ist, dass MATLAB immer eine Ausgabe mit Informationen über den Befehl gmres liefert. Aber ich habe keine Ahnung, wie ich das stoppen kann (es macht das Programm viel langsamer).

Ich hoffe, Sie wissen eine Antwort. Patsch

+0

Bitte beachten Sie verbessern durch Zugabe einer [MCVE] Frage (https://stackoverflow.com/help/mcve) – NKN

Antwort

0

Es ist ein wenig in der Dokumentation versteckt, aber it does say

keine Meldungen angezeigt werden, wenn die flag Ausgabe angegeben ist.

Sie müssen also gmres mit mindestens zwei Ausgängen aufrufen. Sie können dies tun, indem Sie eine Wrapper-Funktion

function x = gmresnomsg(varargin) 
    [x,~] = gmres(varargin{:}); 
end 

machen und dass die Schöpfung für Ihren Griff verwenden

x = @(u) gmresnomsg(A,b+u); 
+0

Vielen Dank für Ihre Antwort! – Patsch

Verwandte Themen