2016-01-18 9 views
6

Wenn Sie zum ersten Mal vpa (aus Octaves symbolic package) anrufen, erzeugt Octave einen Text auf dem Bildschirm, bevor das eigentliche Ergebnis ausgegeben wird. Zum Beispiel:Vermeiden Sie unerwünschten Text aus Octaves symbolischem Paket

>> x = pretty(vpa('sqrt(-1)')) 
OctSymPy v2.2.4: this is free software without warranty, see source. 
Initializing communication with SymPy using a popen2() pipe. 
Detected Windows: using "winwrapy.bat" to workaround Octave bug #43036 
Some output from the Python subprocess (pid 6680) might appear next. 

OctSymPy: Communication established. SymPy v0.7.6.1. 
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] 
x = 1.0*I 

anzumerken, dass die tatsächliche Ausgabe (variable x) ist die Zeichenfolge '1.0*I', wie erwartet. Der Rest ist nicht Bestandteil der Funktionsausgabe, sondern Text, der direkt am Bildschirm erzeugt wird.

Dieser Text erscheint nicht in nachfolgenden Aufrufen an vpa, nur das erste Mal nach dem Start Octave. Es scheint nicht speziell mit vpa verwandt zu sein, aber mit der Art, wie Octave mit Python kommuniziert, um symbolische Berechnungen zu handhaben.

Gibt es einen Weg zu vermeiden, dass Text angezeigt wird? Oder fehlgeschlagen, gibt es eine Möglichkeit, vorübergehend Capture stdout diesen Text abzufangen? Zum Beispiel wäre Matlabs evalc (einen Ausdruck mit Capture auswerten) eine Lösung, aber Octave hat diese Funktion nicht.

Antwort

3

Eine Option sympref quiet on hat recently been committed, die zumindest einige der Meldungen unterdrückt. Überprüfen Sie doc sympref, ob die Änderungen in Ihrer Version bereits vorhanden sind.

+0

Danke! Ich werde das versuchen und zu dir zurückkommen –

+1

Nicht in meinem symbolischen 2.2.4 noch enthalten. Aber es sieht vielversprechend aus! –

Verwandte Themen