2017-05-27 5 views
0

Ich bin nicht sicher, ob meine Frage klar:Anzeige Matlab Programmausgabe für ein anderes c Aufruf ++ Programm

Ich habe ein C++ Projekt, das ich von QtCreator laufen, rufen Sie dieses Programm ein anderes C++ Skript außerhalb des Projekts. Dieser letzte führt ein Shell-Skript aus, das eine Reihe von Matlab-Skripten aufruft.

Ich möchte Ausgabe von den Matlab-Skripts anzeigen, disp funktioniert nicht. Ich habe versucht, die Werte zu schreiben, die ich in einer TXT-Datei lesen möchte. Die Datei wird erstellt, bleibt aber leer. Ich habe versucht, diese Zeilen in eine Datei zu schreiben:

fileId= fopen('imagename.txt','a'); 
fprintf(fileId, 'test : %s',imageName); 
fclose(fileId); 

Ich habe auch versucht assignin mit den Werten möchte ich zeigen, aber sie sind nicht in Matlab Arbeitsbereich gehalten.

Ich kann die Architektur des ganzen Programms nicht ändern, weil es ein großes Projekt ist, das von jemand anderem gemacht wird, den ich fortsetzen muss.

Haben Sie eine andere Möglichkeit zu sehen, was mit den Matlab-Skripten passiert? Es ist schwierig, sie direkt von Matlab aus zu starten, da ich keinen Zugriff auf ihre Eingabewerte habe. Ich kann kaum das C++ - Skript ändern, das sie dazu aufruft, diese Werte anzuzeigen, weil ich ein 'Verweis auf ofstream ist mehrdeutig' Problem habe, wenn ich versuche, es zu bauen, also muss ich etwas debuggen, das von jemand anderem und nicht kommentiert gemacht wird.

+0

Wenn diese C++ ist, Ihre 'fprintf' erfordert die Druckformatangabe in ** doppelten Anführungszeichen ** ("), zB" test:% s ". Überprüfen Sie Ihre Lieblingsreferenz für" printf format " –

+0

Ich habe' fprintf' in den Matlab-Skripten verwendet, da alle Variablen, die ich prüfen möchte, hier sind, also die einfachen Anführungszeichen (') used are correct? –

+0

In C++ benötigt die Funktion [fprintf] (http://en.cppreference.com/w/cpp/io/c/fprintf) eine Textzeichenfolge für ihre Formatierung.Eine Textzeichenfolge kann ein Literal sein string (mit doppelten Anführungszeichen) oder ein Zeiger auf ein Zeichen-Array In C und C++ wird das einfache Anführungszeichen für einzelne Zeichen Literale verwendet. –

Antwort

0

Die Tatsache, dass die Datei, in die Sie schreiben, leer bleibt, ist seltsam und ich würde versuchen, den Grund unabhängig von Ihrer Frage zu finden. Wie auch immer, da Sie Matlab von einem Shell-Skript aufrufen, nehme ich an, dass Sie die Option 'Matlab -r' mit Ihrem Skriptnamen oder etwas Ähnlichem verwenden. In diesem Fall können Sie die -f Option verwenden können, die Matlab die Befehlszeile Ausgabe in eine Protokolldatei zu schreiben erzählt:

matlab -logfile output.log 
+0

Ich stimme zu, ich würde auch gerne wissen, warum meine .txt leer bleibt. Ich denke es liegt an der Variable I Wenn ich versuche, nur eine Zeichenfolge wie "test" zu schreiben, wird sie in meine Datei geschrieben, aber sobald ich meine Variable ** imageName ** verketten will, funktioniert sie nicht. Allerdings * * imageName ** soll eine Zeichenkette sein, da ich die Matlab-Funktion von einem Bash-Skript aus anrufe, also weiß ich nicht, wo das Problem liegt .. Ich denke, ich werde es mit der Funktion '-logfile' sehen, danke für die Tipps Apropos. –

Verwandte Themen