2017-05-27 60 views
0

我不知道如果我的問題是清楚的:顯示MATLAB的程序的輸出,呼籲其他C++程序

我有一個C++項目,我從Qtcreator運行,該程序調用另一個C++項目之外腳本。這最後一個運行一個shell腳本調用一堆matlab腳本。

我想顯示來自matlab腳本的輸出,disp不起作用。 我試圖在.txt文件中寫入我想要讀取的值。該文件已創建但保持空白。 我想這些線路在文件中寫:

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

我也試過用assignin我想要顯示的值,但他們沒有保持MATLAB的工作空間內。

我不能改變整個程序的架構,因爲這是一個由其他人制作的大項目,我必須繼續。

你有另一種方法來觀察matlab腳本上發生了什麼嗎? 由於我無法訪問其輸入值,因此很難直接從Matlab啓動它們。我很難改變C++腳本來調用它們來顯示這些值,因爲當我嘗試構建它時,我有'引用tostream是不明確'的問題,所以我將不得不調試由其他人創建的東西,而不是評論。

+0

如果這是C++,你的'fprintf'需要**雙引號的打印格式說明** (「),例如」test:%s「。檢查你最喜歡的參考文件」printf format「 –

+0

我在matlab腳本中使用了'fprintf',因爲我想檢查的每個變量都在這裏,所以我猜簡單的引號(' )使用的是正確的? –

+0

在C++中,[fprintf](http://en.cppreference.com/w/cpp/io/c/fprintf)函數需要一個用於格式化的文本字符串。一個文本字符串可以是一個文字字符串(使用雙引號)或指向字符數組的指針在C和C++中,單引號用於單字符文字 –

回答

0

事實上,你寫的文件保持空白是奇怪的,我會盡力找到原因,不管你的問題。 無論如何,既然你從shell腳本調用Matlab,我想你的腳本名或類似的東西使用'matlab -r'選項。在這種情況下,你可以使用-f選項告訴Matlab的寫命令行輸出到日誌文件:

matlab -logfile output.log 
+0

我同意,我也想知道爲什麼我的.txt保持爲空。 我認爲這是因爲變量I因爲當我試圖只寫一個像'test'這樣的單純的字符串時,它寫在我的文件中,但是隻要我想連接我的變量** imageName **,它就不起作用 但是* * imageName **應該是一個字符串,因爲我稱之爲bash腳本中的matlab函數,所以我不知道問題在哪裏。我想我會使用'-logfile'函數看到它,謝謝提示順便一提。 –